diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 579003000..14b1bcd1f 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,14 +1,25 @@ Changelog ========= -0.5 (xx.xx.20xx) +0.6 (xx.xx.20xx) +~~~~~~~~~~~~~~~~ + * Added {% routablepageurl %} template tag (@timheap) + * Added RoutablePageMixin (@timheap) + * Renamed wagtailsearch.indexed to wagtailsearch.index + * Fix: Page URL generation now returns correct URLs for sites that have the main 'serve' view rooted somewhere other than '/' + +0.5 (01.08.2014) ~~~~~~~~~~~~~~~~ * Added multiple image uploader + * Added support for face and feature detection on images using the OpenCV library * Added RoutablePage model to allow embedding Django-style URL routing within a page + * Added image/document/snippet usage stats * Explorer nav now rendered separately and fetched with AJAX when needed * Added decorator syntax for hooks * Replaced lxml dependency with html5lib, to simplify installation * Added page_unpublished signal + * Added mechanism to obtain external URLs to images, at any size + * Added Copy Page action to the explorer * Fix: Updates to tag fields are now properly committed to the database when publishing directly from the page edit interface diff --git a/CONTRIBUTORS.rst b/CONTRIBUTORS.rst index df81741c9..b69fdb539 100644 --- a/CONTRIBUTORS.rst +++ b/CONTRIBUTORS.rst @@ -30,6 +30,7 @@ Contributors * Jeffrey Hearn * Robert Clark * Tim Heap +* Nathan Brizendine Translators =========== diff --git a/README.rst b/README.rst index 5fa7f47f9..f06776221 100644 --- a/README.rst +++ b/README.rst @@ -24,8 +24,8 @@ Wagtail is a Django content management system built originally for the `Royal Co * Support for tree-based content organisation * Optional preview->submit->approve workflow * Fast out of the box. `Varnish `_-friendly if you need it -* A simple `form builder `_ -* Optional `static site generation `_ +* A simple `form builder `_ +* Optional `static site generation `_ * Excellent `test coverage `_ Find out more at `wagtail.io `_. diff --git a/docs/images/bad_horizontal_rule.png b/docs/_static/images/bad_horizontal_rule.png similarity index 100% rename from docs/images/bad_horizontal_rule.png rename to docs/_static/images/bad_horizontal_rule.png diff --git a/docs/images/bold_test.png b/docs/_static/images/bold_test.png similarity index 100% rename from docs/images/bold_test.png rename to docs/_static/images/bold_test.png diff --git a/docs/images/screen01_login.png b/docs/_static/images/screen01_login.png similarity index 100% rename from docs/images/screen01_login.png rename to docs/_static/images/screen01_login.png diff --git a/docs/_static/images/screen02_dashboard_editor.png b/docs/_static/images/screen02_dashboard_editor.png new file mode 100644 index 000000000..f0e68e561 Binary files /dev/null and b/docs/_static/images/screen02_dashboard_editor.png differ diff --git a/docs/_static/images/screen03_explorer_menu.png b/docs/_static/images/screen03_explorer_menu.png new file mode 100644 index 000000000..766908810 Binary files /dev/null and b/docs/_static/images/screen03_explorer_menu.png differ diff --git a/docs/_static/images/screen04_search_screen.png b/docs/_static/images/screen04_search_screen.png new file mode 100644 index 000000000..321ee9334 Binary files /dev/null and b/docs/_static/images/screen04_search_screen.png differ diff --git a/docs/_static/images/screen05_explorer_page.png b/docs/_static/images/screen05_explorer_page.png new file mode 100644 index 000000000..fcafe7d33 Binary files /dev/null and b/docs/_static/images/screen05_explorer_page.png differ diff --git a/docs/_static/images/screen06_explorer_page_arrow.png b/docs/_static/images/screen06_explorer_page_arrow.png new file mode 100644 index 000000000..9c4745d84 Binary files /dev/null and b/docs/_static/images/screen06_explorer_page_arrow.png differ diff --git a/docs/_static/images/screen07_explorer_page_breadcrumb.png b/docs/_static/images/screen07_explorer_page_breadcrumb.png new file mode 100644 index 000000000..46cd21249 Binary files /dev/null and b/docs/_static/images/screen07_explorer_page_breadcrumb.png differ diff --git a/docs/_static/images/screen08.5_reorder_page_handles.png b/docs/_static/images/screen08.5_reorder_page_handles.png new file mode 100644 index 000000000..a9a0f1e56 Binary files /dev/null and b/docs/_static/images/screen08.5_reorder_page_handles.png differ diff --git a/docs/_static/images/screen08_add_page_button.png b/docs/_static/images/screen08_add_page_button.png new file mode 100644 index 000000000..b9813e780 Binary files /dev/null and b/docs/_static/images/screen08_add_page_button.png differ diff --git a/docs/_static/images/screen09_page_type_selection.png b/docs/_static/images/screen09_page_type_selection.png new file mode 100644 index 000000000..1afe19537 Binary files /dev/null and b/docs/_static/images/screen09_page_type_selection.png differ diff --git a/docs/_static/images/screen10_blank_page_edit_screen.png b/docs/_static/images/screen10_blank_page_edit_screen.png new file mode 100644 index 000000000..888392aeb Binary files /dev/null and b/docs/_static/images/screen10_blank_page_edit_screen.png differ diff --git a/docs/images/screen11.1_bold_italic.png b/docs/_static/images/screen11.1_bold_italic.png similarity index 100% rename from docs/images/screen11.1_bold_italic.png rename to docs/_static/images/screen11.1_bold_italic.png diff --git a/docs/images/screen11.2_formatting_options.png b/docs/_static/images/screen11.2_formatting_options.png similarity index 100% rename from docs/images/screen11.2_formatting_options.png rename to docs/_static/images/screen11.2_formatting_options.png diff --git a/docs/images/screen11.3_lists.png b/docs/_static/images/screen11.3_lists.png similarity index 100% rename from docs/images/screen11.3_lists.png rename to docs/_static/images/screen11.3_lists.png diff --git a/docs/images/screen11.4_horizontal_rule.png b/docs/_static/images/screen11.4_horizontal_rule.png similarity index 100% rename from docs/images/screen11.4_horizontal_rule.png rename to docs/_static/images/screen11.4_horizontal_rule.png diff --git a/docs/images/screen11.5_undo_redo.png b/docs/_static/images/screen11.5_undo_redo.png similarity index 100% rename from docs/images/screen11.5_undo_redo.png rename to docs/_static/images/screen11.5_undo_redo.png diff --git a/docs/images/screen11.6_images_videos.png b/docs/_static/images/screen11.6_images_videos.png similarity index 100% rename from docs/images/screen11.6_images_videos.png rename to docs/_static/images/screen11.6_images_videos.png diff --git a/docs/images/screen11.7_links_docs.png b/docs/_static/images/screen11.7_links_docs.png similarity index 100% rename from docs/images/screen11.7_links_docs.png rename to docs/_static/images/screen11.7_links_docs.png diff --git a/docs/_static/images/screen11_rich_text_field.png b/docs/_static/images/screen11_rich_text_field.png new file mode 100644 index 000000000..8757d6ba5 Binary files /dev/null and b/docs/_static/images/screen11_rich_text_field.png differ diff --git a/docs/_static/images/screen12_edit_screen_overview.png b/docs/_static/images/screen12_edit_screen_overview.png new file mode 100644 index 000000000..7819b4f07 Binary files /dev/null and b/docs/_static/images/screen12_edit_screen_overview.png differ diff --git a/docs/_static/images/screen13_publish_menu.png b/docs/_static/images/screen13_publish_menu.png new file mode 100644 index 000000000..0732ab316 Binary files /dev/null and b/docs/_static/images/screen13_publish_menu.png differ diff --git a/docs/_static/images/screen14_add_carousel_button.png b/docs/_static/images/screen14_add_carousel_button.png new file mode 100644 index 000000000..0f1aec3a8 Binary files /dev/null and b/docs/_static/images/screen14_add_carousel_button.png differ diff --git a/docs/_static/images/screen15_carousel_form.png b/docs/_static/images/screen15_carousel_form.png new file mode 100644 index 000000000..b5720f898 Binary files /dev/null and b/docs/_static/images/screen15_carousel_form.png differ diff --git a/docs/_static/images/screen16_selecting_image_from_library.png b/docs/_static/images/screen16_selecting_image_from_library.png new file mode 100644 index 000000000..386ad5e9b Binary files /dev/null and b/docs/_static/images/screen16_selecting_image_from_library.png differ diff --git a/docs/images/screen17_upload_image.png b/docs/_static/images/screen17_upload_image.png similarity index 100% rename from docs/images/screen17_upload_image.png rename to docs/_static/images/screen17_upload_image.png diff --git a/docs/images/screen18_image_alignment.png b/docs/_static/images/screen18_image_alignment.png similarity index 100% rename from docs/images/screen18_image_alignment.png rename to docs/_static/images/screen18_image_alignment.png diff --git a/docs/_static/images/screen19_link_form.png b/docs/_static/images/screen19_link_form.png new file mode 100644 index 000000000..1dabeb97d Binary files /dev/null and b/docs/_static/images/screen19_link_form.png differ diff --git a/docs/images/screen20_insert_video_form.png b/docs/_static/images/screen20_insert_video_form.png similarity index 100% rename from docs/images/screen20_insert_video_form.png rename to docs/_static/images/screen20_insert_video_form.png diff --git a/docs/_static/images/screen21_video_in_editor.png b/docs/_static/images/screen21_video_in_editor.png new file mode 100644 index 000000000..4b4bfb36b Binary files /dev/null and b/docs/_static/images/screen21_video_in_editor.png differ diff --git a/docs/_static/images/screen22_required_field.png b/docs/_static/images/screen22_required_field.png new file mode 100644 index 000000000..056f1ae6e Binary files /dev/null and b/docs/_static/images/screen22_required_field.png differ diff --git a/docs/_static/images/screen23_validation_error.png b/docs/_static/images/screen23_validation_error.png new file mode 100644 index 000000000..f1e00b1ac Binary files /dev/null and b/docs/_static/images/screen23_validation_error.png differ diff --git a/docs/_static/images/screen24_multiple_items_closed.png b/docs/_static/images/screen24_multiple_items_closed.png new file mode 100644 index 000000000..23ad40164 Binary files /dev/null and b/docs/_static/images/screen24_multiple_items_closed.png differ diff --git a/docs/_static/images/screen25_multiple_items_open.png b/docs/_static/images/screen25_multiple_items_open.png new file mode 100644 index 000000000..95b8b3dfa Binary files /dev/null and b/docs/_static/images/screen25_multiple_items_open.png differ diff --git a/docs/_static/images/screen26_reordering_multiple_items.png b/docs/_static/images/screen26_reordering_multiple_items.png new file mode 100644 index 000000000..a7a5af5c7 Binary files /dev/null and b/docs/_static/images/screen26_reordering_multiple_items.png differ diff --git a/docs/images/screen27_docs_icon.png b/docs/_static/images/screen27_docs_icon.png similarity index 100% rename from docs/images/screen27_docs_icon.png rename to docs/_static/images/screen27_docs_icon.png diff --git a/docs/_static/images/screen28_docs_form.png b/docs/_static/images/screen28_docs_form.png new file mode 100644 index 000000000..2b85babc0 Binary files /dev/null and b/docs/_static/images/screen28_docs_form.png differ diff --git a/docs/_static/images/screen29_documents_page.png b/docs/_static/images/screen29_documents_page.png new file mode 100644 index 000000000..34ba6230d Binary files /dev/null and b/docs/_static/images/screen29_documents_page.png differ diff --git a/docs/_static/images/screen30_documents_edit_page.png b/docs/_static/images/screen30_documents_edit_page.png new file mode 100644 index 000000000..b6544acb6 Binary files /dev/null and b/docs/_static/images/screen30_documents_edit_page.png differ diff --git a/docs/images/screen31_images_page.png b/docs/_static/images/screen31_images_page.png similarity index 100% rename from docs/images/screen31_images_page.png rename to docs/_static/images/screen31_images_page.png diff --git a/docs/images/screen32_image_edit_page.png b/docs/_static/images/screen32_image_edit_page.png similarity index 100% rename from docs/images/screen32_image_edit_page.png rename to docs/_static/images/screen32_image_edit_page.png diff --git a/docs/images/screen_wagtail_redirects.png b/docs/_static/images/screen_wagtail_redirects.png similarity index 100% rename from docs/images/screen_wagtail_redirects.png rename to docs/_static/images/screen_wagtail_redirects.png diff --git a/docs/advanced_topics.rst b/docs/advanced_topics.rst deleted file mode 100644 index 7e23d8442..000000000 --- a/docs/advanced_topics.rst +++ /dev/null @@ -1,17 +0,0 @@ -Advanced Topics -~~~~~~~~~~~~~~~~ - -.. note:: - This documentation is currently being written. - -replacing image processing backend - -custom image processing tags? - -wagtail user bar custom CSS option? - -extending hallo editor plugins with editor_js() - -injecting any JS into page edit with editor_js() - -Custom content module (same level as docs or images) diff --git a/docs/building_your_site/djangodevelopers.rst b/docs/building_your_site/djangodevelopers.rst deleted file mode 100644 index d1b69dcf3..000000000 --- a/docs/building_your_site/djangodevelopers.rst +++ /dev/null @@ -1,428 +0,0 @@ -For Django developers -===================== - -.. contents:: Contents - :local: - -.. note:: - This documentation is currently being written. - -Overview -~~~~~~~~ - -Wagtail requires a little careful setup to define the types of content that you want to present through your website. The basic unit of content in Wagtail is the ``Page``, and all of your page-level content will inherit basic webpage-related properties from it. But for the most part, you will be defining content yourself, through the construction of Django models using Wagtail's ``Page`` as a base. - -Wagtail organizes content created from your models in a tree, which can have any structure and combination of model objects in it. Wagtail doesn't prescribe ways to organize and interrelate your content, but here we've sketched out some strategies for organizing your models. - -The presentation of your content, the actual webpages, includes the normal use of the Django template system. We'll cover additional functionality that Wagtail provides at the template level later on. - -But first, we'll take a look at the ``Page`` class and model definitions. - - -The Page Class -~~~~~~~~~~~~~~ - -``Page`` uses Django's model interface, so you can include any field type and field options that Django allows. Wagtail provides some fields and editing handlers that simplify data entry in the Wagtail admin interface, so you may want to keep those in mind when deciding what properties to add to your models in addition to those already provided by ``Page``. - - -Built-in Properties of the Page Class -------------------------------------- - -Wagtail provides some properties in the ``Page`` class which are common to most webpages. Since you'll be subclassing ``Page``, you don't have to worry about implementing them. - -Public Properties -````````````````` - - ``title`` (string, required) - Human-readable title for the content - - ``slug`` (string, required) - Machine-readable URL component for this piece of content. The name of the page as it will appear in URLs e.g ``http://domain.com/blog/[my-slug]/`` - - ``seo_title`` (string) - Alternate SEO-crafted title which overrides the normal title for use in the ```` of a page - - ``search_description`` (string) - A SEO-crafted description of the content, used in both internal search indexing and for the meta description read by search engines - -The ``Page`` class actually has alot more to it, but these are probably the only built-in properties you'll need to worry about when creating templates for your models. - - -Anatomy of a Wagtail Model -~~~~~~~~~~~~~~~~~~~~~~~~~~ - -So what does a Wagtail model definition look like? Here's a model representing a typical blog post: - -.. code-block:: python - - from django.db import models - - from wagtail.wagtailcore.models import Page - from wagtail.wagtailcore.fields import RichTextField - from wagtail.wagtailadmin.edit_handlers import FieldPanel - from wagtail.wagtailimages.edit_handlers import ImageChooserPanel - from wagtail.wagtailimages.models import Image - - class BlogPage(Page): - body = RichTextField() - date = models.DateField("Post date") - feed_image = models.ForeignKey( - 'wagtailimages.Image', - null=True, - blank=True, - on_delete=models.SET_NULL, - related_name='+' - ) - - BlogPage.content_panels = [ - FieldPanel('title', classname="full title"), - FieldPanel('date'), - FieldPanel('body', classname="full"), - ] - - BlogPage.promote_panels = [ - FieldPanel('slug'), - FieldPanel('seo_title'), - FieldPanel('show_in_menus'), - FieldPanel('search_description'), - ImageChooserPanel('feed_image'), - ] - -To keep track of your ``Page``-derived models, it might be helpful to include "Page" as the last part of your class name. ``BlogPage`` defines three properties: ``body``, ``date``, and ``feed_image``. These are a mix of basic Django models (``DateField``), Wagtail fields (``RichTextField``), and a pointer to a Wagtail model (``Image``). - -Next, the ``content_panels`` and ``promote_panels`` lists define the capabilities and layout of the Wagtail admin page edit interface. The lists are filled with "panels" and "choosers", which will provide a fine-grain interface for inputting the model's content. The ``ImageChooserPanel``, for instance, lets one browse the image library, upload new images, and input image metadata. The ``RichTextField`` is the basic field for creating web-ready website rich text, including text formatting and embedded media like images and video. The Wagtail admin offers other choices for fields, Panels, and Choosers, with the option of creating your own to precisely fit your content without workarounds or other compromises. - -Your models may be even more complex, with methods overriding the built-in functionality of the ``Page`` to achieve webdev magic. Or, you can keep your models simple and let Wagtail's built-in functionality do the work. - -Now that we have a basic idea of how our content is defined, lets look at relationships between pieces of content. - - -Introduction to Trees -~~~~~~~~~~~~~~~~~~~~~ - -If you're unfamiliar with trees as an abstract data type, you might want to `review the concepts involved. `_ - -As a web developer, though, you probably already have a good understanding of trees as filesystem directories or paths. Wagtail pages can create the same structure, as each page in the tree has its own URL path, like so:: - - / - people/ - nien-nunb/ - laura-roslin/ - events/ - captain-picard-day/ - winter-wrap-up/ - -The Wagtail admin interface uses the tree to organize content for editing, letting you navigate up and down levels in the tree through its Explorer menu. This method of organization is a good place to start in thinking about your own Wagtail models. - - -Nodes and Leaves ----------------- - -It might be handy to think of the ``Page``-derived models you want to create as being one of two node types: parents and leaves. Wagtail isn't prescriptive in this approach, but it's a good place to start if you're not experienced in structuring your own content types. - - -Nodes -````` -Parent nodes on the Wagtail tree probably want to organize and display a browse-able index of their descendants. A blog, for instance, needs a way to show a list of individual posts. - -A Parent node could provide its own function returning its descendant objects. - -.. code-block:: python - - class EventPageIndex(Page): - # ... - def events(self): - # Get list of live event pages that are descendants of this page - events = EventPage.objects.live().descendant_of(self) - - # Filter events list to get ones that are either - # running now or start in the future - events = events.filter(date_from__gte=date.today()) - - # Order by date - events = events.order_by('date_from') - - return events - -This example makes sure to limit the returned objects to pieces of content which make sense, specifically ones which have been published through Wagtail's admin interface (``live()``) and are children of this node (``descendant_of(self)``). By setting a ``subpage_types`` class property in your model, you can specify which models are allowed to be set as children, but Wagtail will allow any ``Page``-derived model by default. Regardless, it's smart for a parent model to provide an index filtered to make sense. - - -Leaves -`````` -Leaves are the pieces of content itself, a page which is consumable, and might just consist of a bunch of properties. A blog page leaf might have some body text and an image. A person page leaf might have a photo, a name, and an address. - -It might be helpful for a leaf to provide a way to back up along the tree to a parent, such as in the case of breadcrumbs navigation. The tree might also be deep enough that a leaf's parent won't be included in general site navigation. - -The model for the leaf could provide a function that traverses the tree in the opposite direction and returns an appropriate ancestor: - -.. code-block:: python - - class EventPage(Page): - # ... - def event_index(self): - # Find closest ancestor which is an event index - return self.get_ancestors().type(EventIndexPage).last() - -If defined, ``subpage_types`` will also limit the parent models allowed to contain a leaf. If not, Wagtail will allow any combination of parents and leafs to be associated in the Wagtail tree. Like with index pages, it's a good idea to make sure that the index is actually of the expected model to contain the leaf. - - -Other Relationships -``````````````````` -Your ``Page``-derived models might have other interrelationships which extend the basic Wagtail tree or depart from it entirely. You could provide functions to navigate between siblings, such as a "Next Post" link on a blog page (``post->post->post``). It might make sense for subtrees to interrelate, such as in a discussion forum (``forum->post->replies``) Skipping across the hierarchy might make sense, too, as all objects of a certain model class might interrelate regardless of their ancestors (``events = EventPage.objects.all``). It's largely up to the models to define their interrelations, the possibilities are really endless. - - -.. _anatomy_of_a_wagtail_request: - -Anatomy of a Wagtail Request -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -For going beyond the basics of model definition and interrelation, it might help to know how Wagtail handles requests and constructs responses. In short, it goes something like: - - #. Django gets a request and routes through Wagtail's URL dispatcher definitions - #. Wagtail checks the hostname of the request to determine which ``Site`` record will handle this request. - #. Starting from the root page of that site, Wagtail traverses the page tree, calling the ``route()`` method and letting each page model decide whether it will handle the request itself or pass it on to a child page. - #. The page responsible for handling the request returns a ``RouteResult`` object from ``route()``, which identifies the page along with any additional args/kwargs to be passed to ``serve()``. - #. Wagtail calls ``serve()``, which constructs a context using ``get_context()`` - #. ``serve()`` finds a template to pass it to using ``get_template()`` - #. A response object is returned by ``serve()`` and Django responds to the requester. - -You can apply custom behavior to this process by overriding ``Page`` class methods such as ``route()`` and ``serve()`` in your own models. For examples, see :ref:`model_recipes`. - - -Page Properties and Methods Reference -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -In addition to the model fields provided, ``Page`` has many properties and methods that you may wish to reference, use, or override in creating your own models. Those listed here are relatively straightforward to use, but consult the Wagtail source code for a full view of what's possible. - -.. automodule:: wagtail.wagtailcore.models -.. autoclass:: Page - - .. autoattribute:: specific - - .. autoattribute:: specific_class - - .. autoattribute:: url - - .. autoattribute:: full_url - - .. automethod:: relative_url - - .. automethod:: is_navigable - - .. automethod:: route - - .. automethod:: serve - - .. automethod:: get_context - - .. automethod:: get_template - - .. autoattribute:: preview_modes - - .. automethod:: serve_preview - - .. automethod:: get_ancestors - - .. automethod:: get_descendants - - .. automethod:: get_siblings - - .. automethod:: search - - -Page Queryset Reference -~~~~~~~~~~~~~~~~~~~~~~~ - -All models that inherit from ``Page`` are given some extra Queryset methods accessible from their ``.objects`` attribute. - -Examples: - - - Selecting only live pages - - .. code-block:: python - - live_pages = Page.objects.live() - - - Selecting published EventPages that are descendants of events_index - - .. code-block:: python - - events = EventPage.objects.live().descendant_of(events_index) - - - Getting a list of menu items - - .. code-block:: python - - # This gets a queryset of live children of the homepage with ``show_in_menus`` set - menu_items = homepage.get_children().live().in_menu() - - -.. automodule:: wagtail.wagtailcore.query -.. autoclass:: PageQuerySet - - .. automethod:: live - - Example: - - .. code-block:: python - - published_pages = Page.objects.live() - - .. automethod:: not_live - - Example: - - .. code-block:: python - - unpublished_pages = Page.objects.not_live() - - .. automethod:: in_menu - - Example: - - .. code-block:: python - - # Build a menu from live pages that are children of the homepage - menu_items = homepage.get_children().live().in_menu() - - - .. note:: - - To put your page in menus, set the show_in_menus flag to true: - - .. code-block:: python - - # Add 'my_page' to the menu - my_page.show_in_menus = True - - .. automethod:: page - - Example: - - .. code-block:: python - - # Append an extra page to a queryset - new_queryset = old_queryset | Page.objects.page(page_to_add) - - .. automethod:: not_page - - Example: - - .. code-block:: python - - # Remove a page from a queryset - new_queryset = old_queryset & Page.objects.not_page(page_to_remove) - - .. automethod:: descendant_of - - Example: - - .. code-block:: python - - # Get EventPages that are under the special_events Page - special_events = EventPage.objects.descendant_of(special_events_index) - - # Alternative way - special_events = special_events_index.get_descendants() - - .. automethod:: not_descendant_of - - Example: - - .. code-block:: python - - # Get EventPages that are not under the archived_events Page - non_archived_events = EventPage.objects.not_descendant_of(archived_events_index) - - .. automethod:: child_of - - Example: - - .. code-block:: python - - # Get a list of sections - sections = Page.objects.child_of(homepage) - - # Alternative way - sections = homepage.get_children() - - .. automethod:: ancestor_of - - Example: - - .. code-block:: python - - # Get the current section - current_section = Page.objects.ancestor_of(current_page).child_of(homepage).first() - - # Alternative way - current_section = current_page.get_ancestors().child_of(homepage).first() - - .. automethod:: not_ancestor_of - - Example: - - .. code-block:: python - - # Get the other sections - other_sections = Page.objects.not_ancestor_of(current_page).child_of(homepage) - - .. automethod:: sibling_of - - Example: - - .. code-block:: python - - # Get list of siblings - siblings = Page.objects.sibling_of(current_page) - - # Alternative way - siblings = current_page.get_siblings() - - .. automethod:: public - - See: :ref:`private_pages` - - .. note:: - - This doesn't filter out unpublished pages. If you want to only have published public pages, use ``.live().public()`` - - Example: - - .. code-block:: python - - # Find all the pages that are viewable by the public - all_pages = Page.objects.live().public() - - .. automethod:: search - - See: :ref:`wagtailsearch_for_python_developers` - - Example: - - .. code-block:: python - - # Search future events - results = EventPage.objects.live().filter(date__gt=timezone.now()).search("Hello") - - -.. _wagtail_site_admin: - -Site -~~~~ - -Django's built-in admin interface provides the way to map a "site" (hostname or domain) to any node in the wagtail tree, using that node as the site's root. - -Access this by going to ``/django-admin/`` and then "Home › Wagtailcore › Sites." To try out a development site, add a single site with the hostname ``localhost`` at port ``8000`` and map it to one of the pieces of content you have created. - -Wagtail's developers plan to move the site settings into the Wagtail admin interface. - - -.. _redirects: - -Redirects -~~~~~~~~~ - -Wagtail provides a simple interface for creating arbitrary redirects to and from any URL. - -.. image:: ../images/screen_wagtail_redirects.png diff --git a/docs/building_your_site/index.rst b/docs/building_your_site/index.rst deleted file mode 100644 index da5cf4f2d..000000000 --- a/docs/building_your_site/index.rst +++ /dev/null @@ -1,11 +0,0 @@ -Building your site -================== - -.. note:: - This documentation is currently incomplete. - -.. toctree:: - :maxdepth: 3 - - djangodevelopers - frontenddevelopers diff --git a/docs/conf.py b/docs/conf.py index e0931da3b..64f4ab934 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -70,9 +70,9 @@ copyright = u'2014, Torchbox' # built documents. # # The short X.Y version. -version = '0.4' +version = '0.5' # The full version, including alpha/beta/rc tags. -release = '0.4' +release = '0.5' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/frontend_cache_purging.rst b/docs/contrib_components/frontend_cache_purging.rst similarity index 99% rename from docs/frontend_cache_purging.rst rename to docs/contrib_components/frontend_cache_purging.rst index 5f9f12ab3..7ae74a36f 100644 --- a/docs/frontend_cache_purging.rst +++ b/docs/contrib_components/frontend_cache_purging.rst @@ -42,8 +42,8 @@ Finally, make sure you have configured your frontend cache to accept PURGE reque - `Squid `_ -Advanced useage -~~~~~~~~~~~~~~~ +Advanced usage +~~~~~~~~~~~~~~ Purging more than one URL per page ---------------------------------- diff --git a/docs/contrib_components/index.rst b/docs/contrib_components/index.rst new file mode 100644 index 000000000..4b508330d --- /dev/null +++ b/docs/contrib_components/index.rst @@ -0,0 +1,11 @@ +Contrib components +================== + + +.. toctree:: + :maxdepth: 2 + + static_site_generation + sitemap_generation + frontend_cache_purging + diff --git a/docs/sitemap_generation.rst b/docs/contrib_components/sitemap_generation.rst similarity index 100% rename from docs/sitemap_generation.rst rename to docs/contrib_components/sitemap_generation.rst diff --git a/docs/static_site_generation.rst b/docs/contrib_components/static_site_generation.rst similarity index 100% rename from docs/static_site_generation.rst rename to docs/contrib_components/static_site_generation.rst diff --git a/docs/form_builder.rst b/docs/core_components/form_builder.rst similarity index 100% rename from docs/form_builder.rst rename to docs/core_components/form_builder.rst diff --git a/docs/core_components/images/feature_detection.rst b/docs/core_components/images/feature_detection.rst new file mode 100644 index 000000000..0b3d03873 --- /dev/null +++ b/docs/core_components/images/feature_detection.rst @@ -0,0 +1,88 @@ +.. _image_feature_detection: + +================= +Feature Detection +================= + +Wagtail has the ability to automatically detect faces and features inside your images and crop the images to those features. + +Feature detection uses OpenCV to detect faces/features in an image when the image is uploaded. The detected features stored internally as a focal point in the ``focal_point_{x, y, width, height}`` fields on the ``Image`` model. These fields are used by the ``fill`` image filter when an image is rendered in a template to crop the image. + + +Setup +===== + +Feature detection requires OpenCV which can be a bit tricky to install as it's not currently pip-installable. + + +Installing OpenCV on Debian/Ubuntu +---------------------------------- + +Debian and ubuntu provide an apt-get package called ``python-opencv``: + + .. code-block:: bash + + sudo apt-get install python-opencv python-numpy + +This will install PyOpenCV into your site packages. If you are using a virtual environment, you need to make sure site packages are enabled or Wagtail will not be able to import PyOpenCV. + + +Enabling site packages in the virtual environment +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are not using a virtual envionment, you can skip this step. + +Enabling site packages is different depending on whether you are using pyvenv (Python 3.3+ only) or virtualenv to manage your virtual environment. + + +pyvenv +`````` + +Go into your pyvenv directory and open the ``pyvenv.cfg`` file then set ``include-system-site-packages`` to ``true``. + + +virtualenv +`````````` + +Go into your virtualenv directory and delete a file called ``lib/python-x.x/no-global-site-packages.txt``. + + +Testing the OpenCV installation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can test that OpenCV can be seen by Wagtail by opening up a python shell (with your virtual environment active) and typing: + + .. code-block:: python + + import cv + +If you don't see an ``ImportError``, it worked. (If you see the error ``libdc1394 error: Failed to initialize libdc1394``, this is harmless and can be ignored.) + + +Switching on feature detection in Wagtail +----------------------------------------- + +Once OpenCV is installed, you need to set the ``WAGTAILIMAGES_FEATURE_DETECTION_ENABLED`` setting to ``True``: + + .. code-block:: python + + # settings.py + + WAGTAILIMAGES_FEATURE_DETECTION_ENABLED = True + + +Manually running feature detection +---------------------------------- + +Feature detection runs when new images are uploaded in to Wagtail. If you already have images in your Wagtail site and would like to run feature detection on them, you will have to run it manually. + +You can manually run feature detection on all images by running the following code in the python shell: + + .. code-block:: python + + from wagtail.wagtailimages.models import Image + + for image in Image.objects.all(): + if image.focal_point is None: + image.focal_point = image.get_suggested_focal_point() + image.save() diff --git a/docs/core_components/images/index.rst b/docs/core_components/images/index.rst new file mode 100644 index 000000000..fcae2d837 --- /dev/null +++ b/docs/core_components/images/index.rst @@ -0,0 +1,9 @@ +Images +====== + +.. toctree:: + :maxdepth: 2 + + using_images_outside_wagtail + feature_detection + diff --git a/docs/core_components/images/using_images_outside_wagtail.rst b/docs/core_components/images/using_images_outside_wagtail.rst new file mode 100644 index 000000000..d3b63126b --- /dev/null +++ b/docs/core_components/images/using_images_outside_wagtail.rst @@ -0,0 +1,82 @@ +.. _using_images_outside_wagtail: + +============================ +Using images outside Wagtail +============================ + +Wagtail provides a way for you to generate external URLs for images in your image library which you can use to display your images on external sites. + + +Setup +===== + +Add an entry in your URLs configuration for ``wagtail.wagtailimages.urls``: + + .. code-block:: python + + from wagtail.wagtailimages import urls as wagtailimages_urls + + + urlpatterns = patterns('', + ... + + url(r'^images/', include(wagtailimages_urls)), + + ... + ) + + +Generating URLs for images +========================== + +Once the above setup is done, a button should appear under the image preview on the image edit page. Clicking this button will take you to an interface where you can specify the size you want the image to be, and it will generate a URL and a preview of what the image is going to look like. + +The filter box lets you choose how you would like the image to be resized: + + +.. glossary:: + ``Original`` + + Leaves the image at its original size - no resizing is performed. + + ``Resize to max`` + + Fit **within** the given dimensions. + + The longest edge will be reduced to the equivalent dimension size defined. e.g A portrait image of width 1000, height 2000, treated with the ``max`` dimensions ``1000x500`` (landscape) would result in the image shrunk so the *height* was 500 pixels and the width 250. + + ``Resize to min`` + + **Cover** the given dimensions. + + This may result in an image slightly **larger** than the dimensions you specify. e.g A square image of width 2000, height 2000, treated with the ``min`` dimensions ``500x200`` (landscape) would have it's height and width changed to 500, i.e matching the width required, but greater than the height. + + ``Resize to width`` + + Reduces the width of the image to the dimension specified. + + ``Resize to height`` + + Resize the height of the image to the dimension specified.. + + ``Resize to fill`` + + Resize and **crop** to fill the **exact** dimensions. + + This can be particularly useful for websites requiring square thumbnails of arbitrary images. For example, a landscape image of width 2000, height 1000, treated with ``fill`` dimensions ``200x200`` would have its height reduced to 200, then its width (ordinarily 400) cropped to 200. + + +Using the URLs on your website or blog +====================================== + +Once you have generated a URL, you can put it straight into the ``src`` attribute of an ```` tag: + + .. code-block:: html + + + + +Performance +=========== + +Currently, Wagtail will regenerate the image every time it is requested. For high volume sites, it is recommended to use a frontend cache to reduce load on the backend servers. diff --git a/docs/core_components/index.rst b/docs/core_components/index.rst new file mode 100644 index 000000000..a28ddf1b7 --- /dev/null +++ b/docs/core_components/index.rst @@ -0,0 +1,13 @@ +Core components +=============== + +.. toctree:: + :maxdepth: 2 + + sites + pages/index + images/index + snippets + search/index + form_builder + diff --git a/docs/private_pages.rst b/docs/core_components/pages/advanced_topics/private_pages.rst similarity index 100% rename from docs/private_pages.rst rename to docs/core_components/pages/advanced_topics/private_pages.rst diff --git a/docs/core_components/pages/advanced_topics/queryset_methods.rst b/docs/core_components/pages/advanced_topics/queryset_methods.rst new file mode 100644 index 000000000..2c221b883 --- /dev/null +++ b/docs/core_components/pages/advanced_topics/queryset_methods.rst @@ -0,0 +1,180 @@ +===================== +Page Queryset Methods +===================== + +All models that inherit from ``Page`` are given some extra Queryset methods accessible from their ``.objects`` attribute. + + +Examples +======== + + - Selecting only live pages + + .. code-block:: python + + live_pages = Page.objects.live() + + - Selecting published EventPages that are descendants of events_index + + .. code-block:: python + + events = EventPage.objects.live().descendant_of(events_index) + + - Getting a list of menu items + + .. code-block:: python + + # This gets a queryset of live children of the homepage with ``show_in_menus`` set + menu_items = homepage.get_children().live().in_menu() + + +Reference +========= + +.. automodule:: wagtail.wagtailcore.query +.. autoclass:: PageQuerySet + + .. automethod:: live + + Example: + + .. code-block:: python + + published_pages = Page.objects.live() + + .. automethod:: not_live + + Example: + + .. code-block:: python + + unpublished_pages = Page.objects.not_live() + + .. automethod:: in_menu + + Example: + + .. code-block:: python + + # Build a menu from live pages that are children of the homepage + menu_items = homepage.get_children().live().in_menu() + + + .. note:: + + To put your page in menus, set the show_in_menus flag to true: + + .. code-block:: python + + # Add 'my_page' to the menu + my_page.show_in_menus = True + + .. automethod:: page + + Example: + + .. code-block:: python + + # Append an extra page to a queryset + new_queryset = old_queryset | Page.objects.page(page_to_add) + + .. automethod:: not_page + + Example: + + .. code-block:: python + + # Remove a page from a queryset + new_queryset = old_queryset & Page.objects.not_page(page_to_remove) + + .. automethod:: descendant_of + + Example: + + .. code-block:: python + + # Get EventPages that are under the special_events Page + special_events = EventPage.objects.descendant_of(special_events_index) + + # Alternative way + special_events = special_events_index.get_descendants() + + .. automethod:: not_descendant_of + + Example: + + .. code-block:: python + + # Get EventPages that are not under the archived_events Page + non_archived_events = EventPage.objects.not_descendant_of(archived_events_index) + + .. automethod:: child_of + + Example: + + .. code-block:: python + + # Get a list of sections + sections = Page.objects.child_of(homepage) + + # Alternative way + sections = homepage.get_children() + + .. automethod:: ancestor_of + + Example: + + .. code-block:: python + + # Get the current section + current_section = Page.objects.ancestor_of(current_page).child_of(homepage).first() + + # Alternative way + current_section = current_page.get_ancestors().child_of(homepage).first() + + .. automethod:: not_ancestor_of + + Example: + + .. code-block:: python + + # Get the other sections + other_sections = Page.objects.not_ancestor_of(current_page).child_of(homepage) + + .. automethod:: sibling_of + + Example: + + .. code-block:: python + + # Get list of siblings + siblings = Page.objects.sibling_of(current_page) + + # Alternative way + siblings = current_page.get_siblings() + + .. automethod:: public + + See: :ref:`private_pages` + + .. note:: + + This doesn't filter out unpublished pages. If you want to only have published public pages, use ``.live().public()`` + + Example: + + .. code-block:: python + + # Find all the pages that are viewable by the public + all_pages = Page.objects.live().public() + + .. automethod:: search + + See: :ref:`wagtailsearch_for_python_developers` + + Example: + + .. code-block:: python + + # Search future events + results = EventPage.objects.live().filter(date__gt=timezone.now()).search("Hello") diff --git a/docs/core_components/pages/advanced_topics/routable_page_mixin.rst b/docs/core_components/pages/advanced_topics/routable_page_mixin.rst new file mode 100644 index 000000000..36ca024c3 --- /dev/null +++ b/docs/core_components/pages/advanced_topics/routable_page_mixin.rst @@ -0,0 +1,119 @@ +.. _routable_page_mixin: + +==================================== +Embedding URL configuration in Pages +==================================== + +.. versionadded:: 0.5 + +The ``RoutablePageMixin`` mixin provides a convenient way for a page to respond on multiple sub-URLs with different views. For example, a blog section on a site might provide several different types of index page at URLs like ``/blog/2013/06/``, ``/blog/authors/bob/``, ``/blog/tagged/python/``, all served by the same ``BlogIndex`` page. + +A ``Page`` using ``RoutablePageMixin`` exists within the page tree like any other page, but URL paths underneath it are checked against a list of patterns, using Django's urlconf scheme. If none of the patterns match, control is passed to subpages as usual (or failing that, a 404 error is thrown). + + +The basics +========== + +To use ``RoutablePageMixin``, you need to make your class inherit from both :class:`wagtail.contrib.wagtailroutablepage.models.RoutablePageMixin` and :class:`wagtail.wagtailcore.models.Page`, and configure the ``subpage_urls`` attribute with your URL configuration. + +Here's an example of an ``EventPage`` with three views: + +.. code-block:: python + + from django.conf.urls import url + + from wagtail.contrib.wagtailroutablepage.models import RoutablePageMixin + from wagtail.wagtailcore.models import Page + + + class EventPage(RoutablePageMixin, Page): + subpage_urls = ( + url(r'^$', 'current_events', name='current_events'), + url(r'^past/$', 'past_events', name='past_events'), + url(r'^year/(\d+)/$', 'events_for_year', name='events_for_year'), + ) + + def current_events(self, request): + """ + View function for the current events page + """ + ... + + def past_events(self, request): + """ + View function for the past events page + """ + ... + + def events_for_year(self, request): + """ + View function for the events for year page + """ + ... + + +The ``RoutablePageMixin`` class +=============================== + +.. automodule:: wagtail.contrib.wagtailroutablepage.models +.. autoclass:: RoutablePageMixin + + .. autoattribute:: subpage_urls + + Example: + + .. code-block:: python + + from django.conf.urls import url + + from wagtail.wagtailcore.models import Page + + class MyPage(RoutablePageMixin, Page): + subpage_urls = ( + url(r'^$', 'serve', name='main'), + url(r'^archive/$', 'archive', name='archive'), + ) + + def serve(self, request): + ... + + def archive(self, request): + ... + + .. automethod:: resolve_subpage + + Example: + + .. code-block:: python + + view, args, kwargs = page.resolve_subpage('/past/') + response = view(request, *args, **kwargs) + + .. automethod:: reverse_subpage + + Example: + + .. code-block:: python + + url = page.url + page.reverse_subpage('events_for_year', args=('2014', )) + + + .. _routablepageurl_template_tag: + +The ``routablepageurl`` template tag +==================================== + +.. versionadded:: 0.6 + +.. currentmodule:: wagtail.contrib.wagtailroutablepage.templatetags.wagtailroutablepage_tags +.. autofunction:: routablepageurl + + Example: + + .. code-block:: html+django + + {% load wagtailroutablepage_tags %} + + {% routablepageurl self "feed" %} + {% routablepageurl self "archive" 2014 08 14 %} + {% routablepageurl self "food" foo="bar" baz="quux" %} diff --git a/docs/core_components/pages/creating_pages.rst b/docs/core_components/pages/creating_pages.rst new file mode 100644 index 000000000..e6fb9a14b --- /dev/null +++ b/docs/core_components/pages/creating_pages.rst @@ -0,0 +1,149 @@ +==================== +Creating page models +==================== + +Wagtail provides a ``Page`` class to represent types of page (a.k.a Content types). Developers should subclass ``Page`` for their own page models. + +``Page`` uses Django's model interface, so you can include any field type and field options that Django allows. Wagtail provides some field types of its own which simplify data entry in the Wagtail admin interface. Wagtail also wraps Django's field types and widgets with its own concept of "Edit Handlers" and "Panels". These further improve the data entry experience. + + +An example Wagtail Page Model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example represents a typical blog post: + +.. code-block:: python + + from django.db import models + + from wagtail.wagtailcore.models import Page + from wagtail.wagtailcore.fields import RichTextField + from wagtail.wagtailadmin.edit_handlers import FieldPanel + from wagtail.wagtailimages.edit_handlers import ImageChooserPanel + from wagtail.wagtailimages.models import Image + + class BlogPage(Page): + body = RichTextField() + date = models.DateField("Post date") + feed_image = models.ForeignKey( + 'wagtailimages.Image', + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name='+' + ) + + + + BlogPage.content_panels = [ + FieldPanel('title', classname="full title"), + FieldPanel('date'), + FieldPanel('body', classname="full"), + ] + + BlogPage.promote_panels = [ + FieldPanel('slug'), + FieldPanel('seo_title'), + FieldPanel('show_in_menus'), + FieldPanel('search_description'), + ImageChooserPanel('feed_image'), + ] + +.. tip:: + To keep track of ``Page`` models and avoid class name clashes, it can be helpful to suffix model class names with "Page" e.g BlogPage, ListingIndexPage. + +In the example above the ``BlogPage`` class defines three properties: ``body``, ``date``, and ``feed_image``. These are a mix of basic Django models (``DateField``), Wagtail fields (``RichTextField``), and a pointer to a Wagtail model (``Image``). + +Below that the ``content_panels`` and ``promote_panels`` lists define the capabilities and layout of the page editing interface in the Wagtail admin. The lists are filled with "panels" and "choosers", which will provide a fine-grain interface for inputting the model's content. The ``ImageChooserPanel``, for instance, lets one browse the image library, upload new images and input image metadata. The ``RichTextField`` is the basic field for creating web-ready website rich text, including text formatting and embedded media like images and video. The Wagtail admin offers other choices for fields, Panels, and Choosers, with the option of creating your own to precisely fit your content without workarounds or other compromises. + +Your models may be even more complex, with methods overriding the built-in functionality of the ``Page`` to achieve webdev magic. Or, you can keep your models simple and let Wagtail's built-in functionality do the work. + + +``Page`` Class Reference +~~~~~~~~~~~~~~~~~~~~~~~~ + +Default fields +-------------- + +Wagtail provides some fields for the ``Page`` class by default, which will be common to all your pages. You don't need to add these fields to your own page models however you do need to allocate them to ``content_panels``, ``promote_panels`` or ``settings_panels``. See above example and for further information on the panels see :ref:`editing-api`. + + ``title`` (string, required) + Human-readable title of the page - what you'd probably use as your ``

`` tag. + + ``slug`` (string, required) + Machine-readable URL component for this page. The name of the page as it will appear in URLs e.g ``http://domain.com/blog/[my-slug]/`` + + ``seo_title`` (string) + Alternate SEO-crafted title, mainly for use in the page ```` tag. + + ``search_description`` (string) + SEO-crafted description of the content, used for internal search indexing, suitable for your page's ``<meta name="description">`` tag. + + ``show_in_menus`` (boolean) + Toggles whether the page should be considered for inclusion in any site-wide menus you create. + + ``go_live_at`` (datetime) + A datetime on which the page should be automatically made published (made publicly accessible) + + ``expire_at`` (datetime) + A datetime on which the page should be unpublished, rendering it inaccessible to the public. + + +Page Attributes, Properties and Methods Reference +------------------------------------------------- + +In addition to the model fields provided, ``Page`` has many properties and methods that you may wish to reference, use, or override in creating your own models. Those listed here are relatively straightforward to use, but consult the Wagtail source code for a full view of what's possible. + +.. automodule:: wagtail.wagtailcore.models +.. autoclass:: Page + + .. autoattribute:: specific + + .. autoattribute:: specific_class + + .. autoattribute:: url + + .. autoattribute:: full_url + + .. automethod:: relative_url + + .. automethod:: is_navigable + + .. automethod:: route + + .. automethod:: serve + + .. automethod:: get_context + + .. automethod:: get_template + + .. autoattribute:: preview_modes + + .. automethod:: serve_preview + + .. automethod:: get_ancestors + + .. automethod:: get_descendants + + .. automethod:: get_siblings + + .. automethod:: search + + .. attribute:: search_fields + + A list of fields to be indexed by the search engine. See Search docs :ref:`wagtailsearch_for_python_developers` + + .. attribute:: subpage_types + + A whitelist of page models which can be created as children of this page type e.g a ``BlogIndex`` page might allow ``BlogPage``, but not ``JobPage`` e.g + + .. code-block:: python + + class BlogIndex(Page): + subpage_types = ['mysite.BlogPage', 'mysite.BlogArchivePage'] + + .. attribute:: password_required_template + + Defines which template file should be used to render the login form for Protected pages using this model. This overrides the default, defined using ``PASSWORD_REQUIRED_TEMPLATE`` in your settings. See :ref:`private_pages` + + diff --git a/docs/editing_api.rst b/docs/core_components/pages/editing_api.rst similarity index 99% rename from docs/editing_api.rst rename to docs/core_components/pages/editing_api.rst index 4d346a815..f1025cbcb 100644 --- a/docs/editing_api.rst +++ b/docs/core_components/pages/editing_api.rst @@ -1,3 +1,4 @@ +.. _editing-api: Defining models with the Editing API ==================================== diff --git a/docs/core_components/pages/index.rst b/docs/core_components/pages/index.rst new file mode 100644 index 000000000..70d20d116 --- /dev/null +++ b/docs/core_components/pages/index.rst @@ -0,0 +1,24 @@ +Pages +===== + +.. note:: + This documentation is currently being written. + +Wagtail requires a little careful setup to define the types of content that you want to present through your website. The basic unit of content in Wagtail is the ``Page``, and all of your page-level content will inherit basic webpage-related properties from it. But for the most part, you will be defining content yourself, through the construction of Django models using Wagtail's ``Page`` as a base. + +Wagtail organizes content created from your models in a tree, which can have any structure and combination of model objects in it. Wagtail doesn't prescribe ways to organize and interrelate your content, but here we've sketched out some strategies for organizing your models. + +The presentation of your content, the actual webpages, includes the normal use of the Django template system. We'll cover additional functionality that Wagtail provides at the template level later on. + + +.. toctree:: + :maxdepth: 2 + + theory + creating_pages + writing_templates + model_recipes + editing_api + advanced_topics/queryset_methods + advanced_topics/private_pages + advanced_topics/routable_page_mixin diff --git a/docs/model_recipes.rst b/docs/core_components/pages/model_recipes.rst similarity index 99% rename from docs/model_recipes.rst rename to docs/core_components/pages/model_recipes.rst index b8f006f99..4b0574ba2 100644 --- a/docs/model_recipes.rst +++ b/docs/core_components/pages/model_recipes.rst @@ -1,8 +1,8 @@ .. _model_recipes: -Model Recipes -============= +Recipes +======= Overriding the serve() Method ----------------------------- diff --git a/docs/core_components/pages/theory.rst b/docs/core_components/pages/theory.rst new file mode 100644 index 000000000..bcea079bb --- /dev/null +++ b/docs/core_components/pages/theory.rst @@ -0,0 +1,97 @@ +.. _pages-theory: + +====== +Theory +====== + + +Introduction to Trees +~~~~~~~~~~~~~~~~~~~~~ + +If you're unfamiliar with trees as an abstract data type, you might want to `review the concepts involved. <http://en.wikipedia.org/wiki/Tree_(data_structure)>`_ + +As a web developer, though, you probably already have a good understanding of trees as filesystem directories or paths. Wagtail pages can create the same structure, as each page in the tree has its own URL path, like so:: + + / + people/ + nien-nunb/ + laura-roslin/ + events/ + captain-picard-day/ + winter-wrap-up/ + +The Wagtail admin interface uses the tree to organize content for editing, letting you navigate up and down levels in the tree through its Explorer menu. This method of organization is a good place to start in thinking about your own Wagtail models. + + +Nodes and Leaves +---------------- + +It might be handy to think of the ``Page``-derived models you want to create as being one of two node types: parents and leaves. Wagtail isn't prescriptive in this approach, but it's a good place to start if you're not experienced in structuring your own content types. + + +Nodes +````` +Parent nodes on the Wagtail tree probably want to organize and display a browse-able index of their descendants. A blog, for instance, needs a way to show a list of individual posts. + +A Parent node could provide its own function returning its descendant objects. + +.. code-block:: python + + class EventPageIndex(Page): + # ... + def events(self): + # Get list of live event pages that are descendants of this page + events = EventPage.objects.live().descendant_of(self) + + # Filter events list to get ones that are either + # running now or start in the future + events = events.filter(date_from__gte=date.today()) + + # Order by date + events = events.order_by('date_from') + + return events + +This example makes sure to limit the returned objects to pieces of content which make sense, specifically ones which have been published through Wagtail's admin interface (``live()``) and are children of this node (``descendant_of(self)``). By setting a ``subpage_types`` class property in your model, you can specify which models are allowed to be set as children, but Wagtail will allow any ``Page``-derived model by default. Regardless, it's smart for a parent model to provide an index filtered to make sense. + + +Leaves +`````` +Leaves are the pieces of content itself, a page which is consumable, and might just consist of a bunch of properties. A blog page leaf might have some body text and an image. A person page leaf might have a photo, a name, and an address. + +It might be helpful for a leaf to provide a way to back up along the tree to a parent, such as in the case of breadcrumbs navigation. The tree might also be deep enough that a leaf's parent won't be included in general site navigation. + +The model for the leaf could provide a function that traverses the tree in the opposite direction and returns an appropriate ancestor: + +.. code-block:: python + + class EventPage(Page): + # ... + def event_index(self): + # Find closest ancestor which is an event index + return self.get_ancestors().type(EventIndexPage).last() + +If defined, ``subpage_types`` will also limit the parent models allowed to contain a leaf. If not, Wagtail will allow any combination of parents and leafs to be associated in the Wagtail tree. Like with index pages, it's a good idea to make sure that the index is actually of the expected model to contain the leaf. + + +Other Relationships +``````````````````` +Your ``Page``-derived models might have other interrelationships which extend the basic Wagtail tree or depart from it entirely. You could provide functions to navigate between siblings, such as a "Next Post" link on a blog page (``post->post->post``). It might make sense for subtrees to interrelate, such as in a discussion forum (``forum->post->replies``) Skipping across the hierarchy might make sense, too, as all objects of a certain model class might interrelate regardless of their ancestors (``events = EventPage.objects.all``). It's largely up to the models to define their interrelations, the possibilities are really endless. + + +.. _anatomy_of_a_wagtail_request: + +Anatomy of a Wagtail Request +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For going beyond the basics of model definition and interrelation, it might help to know how Wagtail handles requests and constructs responses. In short, it goes something like: + + #. Django gets a request and routes through Wagtail's URL dispatcher definitions + #. Wagtail checks the hostname of the request to determine which ``Site`` record will handle this request. + #. Starting from the root page of that site, Wagtail traverses the page tree, calling the ``route()`` method and letting each page model decide whether it will handle the request itself or pass it on to a child page. + #. The page responsible for handling the request returns a ``RouteResult`` object from ``route()``, which identifies the page along with any additional args/kwargs to be passed to ``serve()``. + #. Wagtail calls ``serve()``, which constructs a context using ``get_context()`` + #. ``serve()`` finds a template to pass it to using ``get_template()`` + #. A response object is returned by ``serve()`` and Django responds to the requester. + +You can apply custom behavior to this process by overriding ``Page`` class methods such as ``route()`` and ``serve()`` in your own models. For examples, see :ref:`model_recipes`. diff --git a/docs/building_your_site/frontenddevelopers.rst b/docs/core_components/pages/writing_templates.rst similarity index 99% rename from docs/building_your_site/frontenddevelopers.rst rename to docs/core_components/pages/writing_templates.rst index a5120af19..9374cca32 100644 --- a/docs/building_your_site/frontenddevelopers.rst +++ b/docs/core_components/pages/writing_templates.rst @@ -181,6 +181,7 @@ The available resizing methods are: Leaves the image at its original size - no resizing is performed. + .. Note:: Wagtail does not allow deforming or stretching images. Image dimension ratios will always be kept. Wagtail also *does not support upscaling*. Small images forced to appear at larger sizes will "max out" at their their native dimensions. diff --git a/docs/search/backends.rst b/docs/core_components/search/backends.rst similarity index 100% rename from docs/search/backends.rst rename to docs/core_components/search/backends.rst diff --git a/docs/search/editors_picks.rst b/docs/core_components/search/editors_picks.rst similarity index 100% rename from docs/search/editors_picks.rst rename to docs/core_components/search/editors_picks.rst diff --git a/docs/search/for_python_developers.rst b/docs/core_components/search/for_python_developers.rst similarity index 74% rename from docs/search/for_python_developers.rst rename to docs/core_components/search/for_python_developers.rst index 67f732894..b254a2e1f 100644 --- a/docs/search/for_python_developers.rst +++ b/docs/core_components/search/for_python_developers.rst @@ -10,6 +10,8 @@ For Python developers Basic usage =========== +By default using the :ref:`wagtailsearch_backends_database`, Wagtail's search will only index the ``title`` field of pages. + All searches are performed on Django QuerySets. Wagtail provides a ``search`` method on the queryset for all page models: .. code-block:: python @@ -35,15 +37,20 @@ Indexing extra fields The ``indexed_fields`` configuration format was replaced with ``search_fields`` +.. versionchanged:: 0.6 -Fields need to be explicitly added to the search configuration in order for you to be able to search/filter on them. - -You can add new fields to the search index by overriding the ``search_fields`` property and appending a list of extra ``SearchField``/``FilterField`` objects to it. - -The default value of ``search_fields`` (as set in ``Page``) indexes the ``title`` field as a ``SearchField`` and some other generally useful fields as ``FilterField`` rules. + The ``wagtail.wagtailsearch.indexed`` module was renamed to ``wagtail.wagtailsearch.index`` -Quick example +.. warning:: + + Indexing extra fields is only supported with ElasticSearch as your backend. If you're using the database backend, any other fields you define via ``search_fields`` will be ignored. + + +Fields must be explicitly added to the ``search_fields`` property of your ``Page``-derived model, in order for you to be able to search/filter on them. This is done by overriding ``search_fields`` to append a list of extra ``SearchField``/``FilterField`` objects to it. + + +Example ------------- This creates an ``EventPage`` model with two fields ``description`` and ``date``. ``description`` is indexed as a ``SearchField`` and ``date`` is indexed as a ``FilterField`` @@ -51,15 +58,15 @@ This creates an ``EventPage`` model with two fields ``description`` and ``date`` .. code-block:: python - from wagtail.wagtailsearch import indexed + from wagtail.wagtailsearch import index class EventPage(Page): description = models.TextField() date = models.DateField() search_fields = Page.search_fields + ( # Inherit search_fields from Page - indexed.SearchField('description'), - indexed.FilterField('date'), + index.SearchField('description'), + index.FilterField('date'), ) @@ -67,7 +74,7 @@ This creates an ``EventPage`` model with two fields ``description`` and ``date`` >>> EventPage.objects.filter(date__gt=timezone.now()).search("Christmas") -``indexed.SearchField`` +``index.SearchField`` ----------------------- These are added to the search index and are used for performing full-text searches on your models. These would usually be text fields. @@ -81,7 +88,7 @@ Options - **es_extra** (dict) - This field is to allow the developer to set or override any setting on the field in the ElasticSearch mapping. Use this if you want to make use of any ElasticSearch features that are not yet supported in Wagtail. -``indexed.FilterField`` +``index.FilterField`` ----------------------- These are added to the search index but are not used for full-text searches. Instead, they allow you to run filters on your search results. @@ -102,7 +109,7 @@ One use for this is indexing ``get_*_display`` methods Django creates automatica .. code-block:: python - from wagtail.wagtailsearch import indexed + from wagtail.wagtailsearch import index class EventPage(Page): IS_PRIVATE_CHOICES = ( @@ -114,10 +121,10 @@ One use for this is indexing ``get_*_display`` methods Django creates automatica search_fields = Page.search_fields + ( # Index the human-readable string for searching - indexed.SearchField('get_is_private_display'), + index.SearchField('get_is_private_display'), # Index the boolean value for filtering - indexed.FilterField('is_private'), + index.FilterField('is_private'), ) @@ -126,25 +133,25 @@ Indexing non-page models Any Django model can be indexed and searched. -To do this, inherit from ``indexed.Indexed`` and add some ``search_fields`` to the model. +To do this, inherit from ``index.Indexed`` and add some ``search_fields`` to the model. .. code-block:: python - from wagtail.wagtailsearch import indexed + from wagtail.wagtailsearch import index - class Book(models.Model, indexed.Indexed): + class Book(models.Model, index.Indexed): title = models.CharField(max_length=255) genre = models.CharField(max_length=255, choices=GENRE_CHOICES) author = models.ForeignKey(Author) published_date = models.DateTimeField() search_fields = ( - indexed.SearchField('title', partial_match=True, boost=10), - indexed.SearchField('get_genre_display'), + index.SearchField('title', partial_match=True, boost=10), + index.SearchField('get_genre_display'), - indexed.FilterField('genre'), - indexed.FilterField('author'), - indexed.FilterField('published_date'), + index.FilterField('genre'), + index.FilterField('author'), + index.FilterField('published_date'), ) # As this model doesn't have a search method in its QuerySet, we have to call search directly on the backend diff --git a/docs/search/frontend_views.rst b/docs/core_components/search/frontend_views.rst similarity index 100% rename from docs/search/frontend_views.rst rename to docs/core_components/search/frontend_views.rst diff --git a/docs/search/index.rst b/docs/core_components/search/index.rst similarity index 100% rename from docs/search/index.rst rename to docs/core_components/search/index.rst diff --git a/docs/core_components/sites.rst b/docs/core_components/sites.rst new file mode 100644 index 000000000..89c490b65 --- /dev/null +++ b/docs/core_components/sites.rst @@ -0,0 +1,10 @@ +.. _wagtail_site_admin: + +Sites +===== + +Django's built-in admin interface provides the way to map a "site" (hostname or domain) to any node in the wagtail tree, using that node as the site's root. See :ref:`pages-theory`. + +Access this by going to ``/django-admin/`` and then "Home › Wagtailcore › Sites." To try out a development site, add a single site with the hostname ``localhost`` at port ``8000`` and map it to one of the pieces of content you have created. + +Wagtail's developers plan to move the site settings into the Wagtail admin interface. diff --git a/docs/snippets.rst b/docs/core_components/snippets.rst similarity index 100% rename from docs/snippets.rst rename to docs/core_components/snippets.rst diff --git a/docs/editor_manual/documents_images_snippets/documents.rst b/docs/editor_manual/documents_images_snippets/documents.rst index 8983e8b5f..21af7ab52 100644 --- a/docs/editor_manual/documents_images_snippets/documents.rst +++ b/docs/editor_manual/documents_images_snippets/documents.rst @@ -3,14 +3,14 @@ Documents Documents such as PDFs can be managed from the Documents interface, available in the left-hand menu. This interface allows you to add documents to and remove documents from the CMS. -.. image:: ../../images/screen29_documents_page.png +.. image:: ../../_static/images/screen29_documents_page.png * Add documents by clicking the *Add document* button in the top-right. * Search for documents in the CMS by entering your search term in the search bar. The results will be automatically updated as you type. * You can also filter the results by *Popular tags*. Click on a tag to update the search results listing. * Edit the details of a document by clicking the document title. -.. image:: ../../images/screen30_documents_edit_page.png +.. image:: ../../_static/images/screen30_documents_edit_page.png * When editing a document you can replace the file associated with that document record. This means you can update documents without having to update the pages on which they are placed. Changing the file will change it on all pages that use the document. * Add or remove tags using the Tags field. diff --git a/docs/editor_manual/documents_images_snippets/images.rst b/docs/editor_manual/documents_images_snippets/images.rst index 13cdf71a2..008a1f330 100644 --- a/docs/editor_manual/documents_images_snippets/images.rst +++ b/docs/editor_manual/documents_images_snippets/images.rst @@ -3,11 +3,11 @@ Images If you want to edit, add or remove images from the CMS outside of the individual pages you can do so from the Images interface. This is accessed from the left-hand menu. -.. image:: ../../images/screen31_images_page.png +.. image:: ../../_static/images/screen31_images_page.png * Clicking an image will allow you to edit the data associated with it. This includes the Alt text, the photographers credit, the medium of the subject matter and much more. **NOTE:** changing the alt text here will alter it for all occurrences of the image in carousels, but not in inline images, where the alt text can be set separately. -.. image:: ../../images/screen32_image_edit_page.png +.. image:: ../../_static/images/screen32_image_edit_page.png * When editing an image you can replace the file associated with that image record. This means you can update images without having to update the pages on which they are placed. Changing the file will change it on all pages that use the image. diff --git a/docs/editor_manual/editing_existing_pages.rst b/docs/editor_manual/editing_existing_pages.rst index b80e6cd89..566e90db6 100644 --- a/docs/editor_manual/editing_existing_pages.rst +++ b/docs/editor_manual/editing_existing_pages.rst @@ -6,7 +6,7 @@ There are two ways that you can access the edit screen of an existing page: * Clicking the title of the page in an `Explorer page <the_explorer_page.html>`_ or in `search results <using_search.html>`_. * Clicking the *Edit* link below the title in either of the situations above. -.. image:: ../images/screen12_edit_screen_overview.png +.. image:: ../_static/images/screen12_edit_screen_overview.png * When editing an existing page the title of the page being edited is displayed at the top of the page. * The current status of the page is displayed in the top-right. diff --git a/docs/editor_manual/finding_your_way_around/the_dashboard.rst b/docs/editor_manual/finding_your_way_around/the_dashboard.rst index dc16479d3..8fa832e89 100644 --- a/docs/editor_manual/finding_your_way_around/the_dashboard.rst +++ b/docs/editor_manual/finding_your_way_around/the_dashboard.rst @@ -11,7 +11,7 @@ The Dashboard provides information on: You can return to the Dashboard at any time by clicking the Wagtail log in the top-left of the screen. -.. image:: ../../images/screen02_dashboard_editor.png +.. image:: ../../_static/images/screen02_dashboard_editor.png - Clicking the logo returns you to your Dashboard. - Thes stats at the top of the page describe the total amount of content on the CMS (just for fun!). diff --git a/docs/editor_manual/finding_your_way_around/the_explorer_menu.rst b/docs/editor_manual/finding_your_way_around/the_explorer_menu.rst index 325b5b328..923d598a0 100644 --- a/docs/editor_manual/finding_your_way_around/the_explorer_menu.rst +++ b/docs/editor_manual/finding_your_way_around/the_explorer_menu.rst @@ -1,7 +1,7 @@ The Explorer menu ~~~~~~~~~~~~~~~~~ -.. image:: ../../images/screen03_explorer_menu.png +.. image:: ../../_static/images/screen03_explorer_menu.png * Click the Explorer button in the sidebar to open the site explorer. This allows you to navigate through the tree-structure of the site. * Clicking the name of a page will take you to the Explorer page for that section (see below). NOTE: The site explorer only displays pages which themselves have child pages. To see and edit the child pages you should click the name of the parent page in the site explorer. diff --git a/docs/editor_manual/finding_your_way_around/the_explorer_page.rst b/docs/editor_manual/finding_your_way_around/the_explorer_page.rst index c67b24c59..51a4aa2db 100644 --- a/docs/editor_manual/finding_your_way_around/the_explorer_page.rst +++ b/docs/editor_manual/finding_your_way_around/the_explorer_page.rst @@ -4,20 +4,20 @@ The Explorer page The Explorer page allows you to view the a page's children and perform actions on them. From here you can publish/unpublish pages, move pages to other sections, drill down further into the content tree, or reorder pages under the parent for the purposes of display in menus. -.. image:: ../../images/screen05_explorer_page.png +.. image:: ../../_static/images/screen05_explorer_page.png * The name of the section you are looking at is displayed below the breadcrumb (the row of page names beginning with the home icon). Each section is also itself a page (in this case the homepage). Clicking the title of the section takes you to the Edit screen for the section page. * As the heading suggests, below are the child pages of the section. Clicking the titles of each child page will take you to its Edit screen. -.. image:: ../../images/screen06_explorer_page_arrow.png +.. image:: ../../_static/images/screen06_explorer_page_arrow.png * Clicking the arrows will display a further level of child pages. -.. image:: ../../images/screen07_explorer_page_breadcrumb.png +.. image:: ../../_static/images/screen07_explorer_page_breadcrumb.png * As you drill down through the site the breadcrumb (the row of pages beginning with the home icon) will display the path you have taken. Clicking on the page titles in the breadcrumb will take you to the Explorer screen for that page. -.. image:: ../../images/screen08_add_page_button.png +.. image:: ../../_static/images/screen08_add_page_button.png * To add further child pages press the Add child page button below the parent page title. You can view the parent page on the live site by pressing the View live button. The Move button will take you to the Move page screen where you can reposition the page and all its child pages in the site structure. * Similar buttons are available for each child page. These are made visible on hover. @@ -25,7 +25,7 @@ The Explorer page allows you to view the a page's children and perform actions o Reordering pages ________________ -.. image:: ../../images/screen08.5_reorder_page_handles.png +.. image:: ../../_static/images/screen08.5_reorder_page_handles.png * Clicking the icon to the far left of the child pages table will enable the reordering handles. This allows you to reorder the way that content displays in the main menu of your website. * Reorder by dragging the pages by the handles on the far left (the icon made up of 8 dots). diff --git a/docs/editor_manual/finding_your_way_around/using_search.rst b/docs/editor_manual/finding_your_way_around/using_search.rst index 24a0fc4db..0cd001db8 100644 --- a/docs/editor_manual/finding_your_way_around/using_search.rst +++ b/docs/editor_manual/finding_your_way_around/using_search.rst @@ -1,7 +1,7 @@ Using search ~~~~~~~~~~~~ -.. image:: ../../images/screen04_search_screen.png +.. image:: ../../_static/images/screen04_search_screen.png * A very easy way to find the page that you want is to use the main search feature, accessible from the left-hand menu. * Simply type in part or all of the name of the page you are looking for, and the results below will automatically update as you type. diff --git a/docs/editor_manual/getting_started.rst b/docs/editor_manual/getting_started.rst index 64969aa0a..e935b039e 100644 --- a/docs/editor_manual/getting_started.rst +++ b/docs/editor_manual/getting_started.rst @@ -15,4 +15,4 @@ __________ * Access this by adding **/admin** onto the end of your root URL (e.g. www.example.com/admin). * Enter your username and password and click **Sign in**. -.. image:: ../images/screen01_login.png \ No newline at end of file +.. image:: ../_static/images/screen01_login.png \ No newline at end of file diff --git a/docs/editor_manual/new_pages/adding_multiple_items.rst b/docs/editor_manual/new_pages/adding_multiple_items.rst index 447574588..f173995dd 100644 --- a/docs/editor_manual/new_pages/adding_multiple_items.rst +++ b/docs/editor_manual/new_pages/adding_multiple_items.rst @@ -3,15 +3,15 @@ Adding multiple items A common feature of Wagtail is the ability to add more than one of a particular type of field or item. For example, you can add as many carousel items or related links as you wish. -.. image:: ../../images/screen24_multiple_items_closed.png +.. image:: ../../_static/images/screen24_multiple_items_closed.png * Whenever you see the white cross in the green circle illustrated here it means you can add multiple objects or items to a page. Clicking the icon will display the fields required for that piece of content. The image below demonstrates this with a *Related link* item. -.. image:: ../../images/screen25_multiple_items_open.png +.. image:: ../../_static/images/screen25_multiple_items_open.png * You can delete an individual item by pressing the trash can in the top-right. * You can add more items by clicking the link with the white cross again. -.. image:: ../../images/screen26_reordering_multiple_items.png +.. image:: ../../_static/images/screen26_reordering_multiple_items.png 4. You can reorder your multiple items using the up and down arrows. Doing this will affect the order in which they are display on the live page. \ No newline at end of file diff --git a/docs/editor_manual/new_pages/creating_body_content.rst b/docs/editor_manual/new_pages/creating_body_content.rst index 0a87a6ef5..1e3c2b21b 100644 --- a/docs/editor_manual/new_pages/creating_body_content.rst +++ b/docs/editor_manual/new_pages/creating_body_content.rst @@ -7,34 +7,34 @@ There are two types of text entry fields you will see when creating a page. Some So, when you click into certain fields, for example the *Body* field, you will be presented with a set of tools which allow you to format and style your text. These tools also allow you to insert links, images, videos clips and links to documents. -.. image:: ../../images/screen11_rich_text_field.png +.. image:: ../../_static/images/screen11_rich_text_field.png Below is a summary of what the different buttons represent: -.. image:: ../../images/screen11.1_bold_italic.png +.. image:: ../../_static/images/screen11.1_bold_italic.png **Bold / Italic:** Either click then type for bold or italic, or highlight and select to convert existing text to bold or italic. -.. image:: ../../images/screen11.2_formatting_options.png +.. image:: ../../_static/images/screen11.2_formatting_options.png **Paragraph / heading levels:** Clicking into a paragraph and selecting one of these options will change the level of the text. H1 is not included as this is reserved for the page title. -.. image:: ../../images/screen11.3_lists.png +.. image:: ../../_static/images/screen11.3_lists.png **Bulleted and numbered lists** -.. image:: ../../images/screen11.4_horizontal_rule.png +.. image:: ../../_static/images/screen11.4_horizontal_rule.png **Horizontal rule:** Creates a horizontal line at the position of the cursor. If inserted inside a paragraph it will split the paragraph into two seperate paragraphs. -.. image:: ../../images/screen11.5_undo_redo.png +.. image:: ../../_static/images/screen11.5_undo_redo.png **Undo / redo:** As expected will undo or redo the latest actions. Never use the your browser's back button when attempting to undo changes as this could lead to errors. Either use this undo button, or the usual keyboard shortcut, CTRL+Z. -.. image:: ../../images/screen11.6_images_videos.png +.. image:: ../../_static/images/screen11.6_images_videos.png -**Insert image / video:** Allows you to insert an image or video into the rich text field. See Inserting images and videos section for more details. .. insert links for images and videos here>> +**Insert image / video:** Allows you to insert an image or video into the rich text field. See Inserting images and videos section for more details. See `Inserting images <inserting_images.html>` and `Inserting videos <inserting_videos.html>` sections. -.. image:: ../../images/screen11.7_links_docs.png +.. image:: ../../_static/images/screen11.7_links_docs.png -**Insert link / document:** Allows you to insert a link or a document into the rich text field. See Inserting links and Inserting documents for more details. .. insert links to Links and documents sections>> \ No newline at end of file +**Insert link / document:** Allows you to insert a link or a document into the rich text field. See Inserting links and Inserting documents for more details. See `Inserting links section <inserting_links.html>`. \ No newline at end of file diff --git a/docs/editor_manual/new_pages/index.rst b/docs/editor_manual/new_pages/index.rst index c3695970d..904b94600 100644 --- a/docs/editor_manual/new_pages/index.rst +++ b/docs/editor_manual/new_pages/index.rst @@ -1,7 +1,7 @@ Creating new pages ~~~~~~~~~~~~~~~~~~ -.. image:: ../../images/screen08_add_page_button.png +.. image:: ../../_static/images/screen08_add_page_button.png Create new pages by clicking the Add child page. This creates a child page of the section you are currently in. In this case a child page of the Homepage. diff --git a/docs/editor_manual/new_pages/inserting_documents.rst b/docs/editor_manual/new_pages/inserting_documents.rst index 6cc2208fe..f6b6c9407 100644 --- a/docs/editor_manual/new_pages/inserting_documents.rst +++ b/docs/editor_manual/new_pages/inserting_documents.rst @@ -1,10 +1,10 @@ Inserting links to documents into body text ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. image:: ../../images/screen27_docs_icon.png +.. image:: ../../_static/images/screen27_docs_icon.png It is possible to insert links to documents held in the CMS into the body text of a web page by clicking the button above in the Body field. The process for doing this is the same as when inserting an image. You are given the choice of either choosing a document from the CMS, or uploading a new document. -.. image:: ../../images/screen28_docs_form.png \ No newline at end of file +.. image:: ../../_static/images/screen28_docs_form.png \ No newline at end of file diff --git a/docs/editor_manual/new_pages/inserting_images.rst b/docs/editor_manual/new_pages/inserting_images.rst index 3ad57f101..b00c85eaa 100644 --- a/docs/editor_manual/new_pages/inserting_images.rst +++ b/docs/editor_manual/new_pages/inserting_images.rst @@ -11,11 +11,11 @@ __________________________________ The carousel is where the main, featured images and videos associated with a page should be displayed. -.. image:: ../../images/screen14_add_carousel_button.png +.. image:: ../../_static/images/screen14_add_carousel_button.png * To insert a carousel item click the Add carousel content link in the Carousel content section. -.. image:: ../../images/screen15_carousel_form.png +.. image:: ../../_static/images/screen15_carousel_form.png * You can then insert an image by clicking the *Choose an image* button. * It is also possible to add videos to a carousel. Simply copy and paste the web address for the video (either YouTube or Vimeo) into the *Embed URL* field and click Insert. A poster image for the video can also be uploaded or selected from the CMS. This is the image displayed before a user has clicked play on the video. @@ -38,7 +38,7 @@ When you click the *Choose an image* button you will be presented with a pop-up The image below demonstrates finding and inserting an image that is already present in the CMS image library. -.. image:: ../../images/screen16_selecting_image_from_library.png +.. image:: ../../_static/images/screen16_selecting_image_from_library.png #. Typing into the search box will automatically display the results below. #. Clicking one of the Popular tags will filter the search results by that tag. @@ -46,7 +46,7 @@ The image below demonstrates finding and inserting an image that is already pre **Uploading a new image to the CMS** -.. image:: ../../images/screen17_upload_image.png +.. image:: ../../_static/images/screen17_upload_image.png #. You must include an image title for your uploaded image #. Click the *Choose file* button to choose an image from your computer. @@ -60,12 +60,12 @@ Images can also be inserted into the body text of a page. When editing the Body In addition, the Wagtail Demo site allows you to chose an aligmnent for you image. -.. image:: ../../images/screen18_image_alignment.png +.. image:: ../../_static/images/screen18_image_alignment.png #. You can select how the image is displayed by selecting one of the format options. #. In the Wagtail Demo site, images inserted into the body text do not have embeded captions (these should be added as regular body text). However you must still provide specific alt text for your image. -The aligmnents available are described below: +The alignments available are described below: * **Full width:** Image will be inserted using the full width of the text area. * **Half-width left/right aligned:** Inserts the image at half the width of the text area. If inserted in a block of text the text will wrap around the image. If two half-width images are inserted together they will display next to each other. diff --git a/docs/editor_manual/new_pages/inserting_links.rst b/docs/editor_manual/new_pages/inserting_links.rst index a74e0a824..030b93bc2 100644 --- a/docs/editor_manual/new_pages/inserting_links.rst +++ b/docs/editor_manual/new_pages/inserting_links.rst @@ -5,7 +5,7 @@ Similar to images, there are a variety of points at which you will want to add l Whichever way you insert a link, you will be presented with the form displayed below. -.. image:: ../../images/screen19_link_form.png +.. image:: ../../_static/images/screen19_link_form.png * Search for an existing page to link to using the search bar at the top of the pop-up. * Below the search bar you can select the type of link you want to insert. The following types are available: diff --git a/docs/editor_manual/new_pages/inserting_videos.rst b/docs/editor_manual/new_pages/inserting_videos.rst index 1b32c0d1c..fe986592b 100644 --- a/docs/editor_manual/new_pages/inserting_videos.rst +++ b/docs/editor_manual/new_pages/inserting_videos.rst @@ -6,10 +6,10 @@ Inserting videos into body content As well as inserting videos into a carousel, Wagtail's rich text fields allow you to add videos into the body of a page by clicking the *Add video* button in the toolbar. -.. image:: ../../images/screen20_insert_video_form.png +.. image:: ../../_static/images/screen20_insert_video_form.png * Copy and paste the web address for the video (either YouTube or Vimeo) into the URL field and click Insert. -.. image:: ../../images/screen21_video_in_editor.png +.. image:: ../../_static/images/screen21_video_in_editor.png * A placeholder with the name of the video and a screenshot will be inserted into the text area. Clicking the X in the top corner will remove the video. diff --git a/docs/editor_manual/new_pages/previewing_and_submitting_for_moderation.rst b/docs/editor_manual/new_pages/previewing_and_submitting_for_moderation.rst index 0daab3774..49411c5c5 100644 --- a/docs/editor_manual/new_pages/previewing_and_submitting_for_moderation.rst +++ b/docs/editor_manual/new_pages/previewing_and_submitting_for_moderation.rst @@ -9,4 +9,4 @@ The Save/Preview/Submit for moderation menu is always present at the bottom of t * **Publish/Unpublish:** Clicking either the *Publish* or *Unpublish* buttons will take you to a confirmation screen asking you to confirm that you wish to publish or unpublish this page. If a page is published it will be accessible from its specific URL and will also be displayed in site search results. (moderators and administrators only) * **Delete:** Clicking this button will take you to a confirmation screen asking you to confirm that you wish to delete the current page. Be sure that this is actually what you want to do, as deleted pages are not recoverable. In many situations simply unpublishing the page will be enough. (moderators and administrators only) -.. image:: ../../images/screen13_publish_menu.png +.. image:: ../../_static/images/screen13_publish_menu.png diff --git a/docs/editor_manual/new_pages/required_fields.rst b/docs/editor_manual/new_pages/required_fields.rst index 315636c6b..62b3af461 100644 --- a/docs/editor_manual/new_pages/required_fields.rst +++ b/docs/editor_manual/new_pages/required_fields.rst @@ -3,9 +3,9 @@ Required fields * Fields marked with an asterisk are required. You will not be able to save a draft or submit the page for moderation without these fields being completed. -.. image:: ../../images/screen22_required_field.png +.. image:: ../../_static/images/screen22_required_field.png * If you try to save/submit the page with some required fields not filled out, you will see the error displayed here. * The number of validation errors for each of the *Promote* and *Content* tabs will appear in a red circle, and the text, 'This field is required', will appear below each field that must be completed. -.. image:: ../../images/screen23_validation_error.png +.. image:: ../../_static/images/screen23_validation_error.png diff --git a/docs/editor_manual/new_pages/selecting_a_page_type.rst b/docs/editor_manual/new_pages/selecting_a_page_type.rst index e3a4001d5..99ec8eebf 100644 --- a/docs/editor_manual/new_pages/selecting_a_page_type.rst +++ b/docs/editor_manual/new_pages/selecting_a_page_type.rst @@ -1,12 +1,12 @@ Selecting a page type ~~~~~~~~~~~~~~~~~~~~~ -.. image:: ../../images/screen09_page_type_selection.png +.. image:: ../../_static/images/screen09_page_type_selection.png * On the left of the page chooser screen are listed all the types of pages that you can create. Clicking the page type name will take you to the Create new page screen for that page type (see below). * Clicking the *View all … pages* links on the right will display all the pages that exist on the website of this type. This is to help you judge what type of page you will need to complete your task. -.. image:: ../../images/screen10_blank_page_edit_screen.png +.. image:: ../../_static/images/screen10_blank_page_edit_screen.png * Once you’ve selected a page type you will be presented with a blank New page screen. * Click into the areas below each field's heading to start entering content. \ No newline at end of file diff --git a/docs/contributing.rst b/docs/howto/contributing.rst similarity index 100% rename from docs/contributing.rst rename to docs/howto/contributing.rst diff --git a/docs/deploying.rst b/docs/howto/deploying.rst similarity index 79% rename from docs/deploying.rst rename to docs/howto/deploying.rst index 5ca7c67df..9acf54976 100644 --- a/docs/deploying.rst +++ b/docs/howto/deploying.rst @@ -4,7 +4,7 @@ Deploying Wagtail On your server ~~~~~~~~~~~~~~ -Wagtail is straightforward to deploy on modern Linux-based distributions, but see the section on :doc:`performance </performance>` for the non-Python services we recommend. If you are running Debian or Ubuntu, this installation script for our Vagrant box may be useful: +Wagtail is straightforward to deploy on modern Linux-based distributions, but see the section on :doc:`performance </howto/performance>` for the non-Python services we recommend. If you are running Debian or Ubuntu, this installation script for our Vagrant box may be useful: `github.com/torchbox/wagtaildemo/blob/master/etc/install/install.sh <https://github.com/torchbox/wagtaildemo/blob/master/etc/install/install.sh>`_ @@ -18,4 +18,4 @@ On Gondor On other PAASs and IAASs ~~~~~~~~~~~~~~~~~~~~~~~~ -We know of Wagtail sites running on `Heroku <http://spapas.github.io/2014/02/13/wagtail-tutorial/>`_, Digital Ocean and elsewhere. If you have successfully installed Wagtail on your platform or infrastructure, please :doc:`contribute </contributing>` your notes to this documentation! \ No newline at end of file +We know of Wagtail sites running on `Heroku <http://spapas.github.io/2014/02/13/wagtail-tutorial/>`_, Digital Ocean and elsewhere. If you have successfully installed Wagtail on your platform or infrastructure, please :doc:`contribute </howto/contributing>` your notes to this documentation! diff --git a/docs/howto/index.rst b/docs/howto/index.rst new file mode 100644 index 000000000..c9826e4d5 --- /dev/null +++ b/docs/howto/index.rst @@ -0,0 +1,12 @@ +How to +====== + + +.. toctree:: + :maxdepth: 2 + + settings + deploying + performance + multilingual_sites + contributing diff --git a/docs/howto/multilingual_sites.rst b/docs/howto/multilingual_sites.rst new file mode 100644 index 000000000..1d73a18fb --- /dev/null +++ b/docs/howto/multilingual_sites.rst @@ -0,0 +1,146 @@ +=========================== +Creating multilingual sites +=========================== + +This tutorial will show you a method of creating multilingual sites in Wagtail. + +Currently, Wagtail doesn't support multiple languages in the same page. The recommended way of creating multilingual websites in Wagtail at the moment is to create one section of your website for each language. + +For example:: + + / + en/ + about/ + contact/ + fr/ + about/ + contact/ + + +The root page +============= + +The root page (``/``) should detect the browsers language and forward them to the correct language homepage (``/en/``, ``/fr/``). This page should sit at the site root (where the homepage would normally be). + +We must set Djangos ``LANGUAGES`` setting so we don't redirect non English/French users to pages that don't exist. + + +.. code-block:: python + + # settings.py + LANGUAGES = ( + ('en', _("English")), + ('fr', _("French")), + ) + + # models.py + from django.utils import translation + from django.http import HttpResponseRedirect + + from wagtail.wagtailcore.models import Page + + + class LanguageRedirectionPage(Page): + + def serve(self, request): + # This will only return a language that is in the LANGUAGES Django setting + language = translation.get_language_from_request(request) + + return HttpResponseRedirect(self.url + language + '/') + + +Linking pages together +====================== + +It may be useful to link different versions of the same page together to allow the user to easily switch between languages. But we don't want to increse the burdon on the editor too much so ideally, editors should only need to link one of the pages to the other versions and the links between the other versions should be created implicitly. + +As this behaviour needs to be added to all page types that would be translated, its best to put this behaviour in a mixin. + +Heres an example of how this could be implemented (with English as the main language and French/Spanish as alternative languages): + +.. code-block:: python + + class TranslatablePageMixin(models.Model): + # One link for each alternative language + # These should only be used on the main language page (english) + french_link = models.ForeignKey(Page, null=True, on_delete=models.SET_NULL, blank=True, related_name='+') + spanish_link = models.ForeignKey(Page, null=True, on_delete=models.SET_NULL, blank=True, related_name='+') + + def get_language(self): + """ + This returns the language code for this page. + """ + # Look through ancestors of this page for its language homepage + # The language homepage is located at depth 3 + language_homepage = self.get_ancestors(inclusive=True).get(depth=3) + + # The slug of language homepages should always be set to the language code + return language_homepage.slug + + + # Method to find the main language version of this page + # This works by reversing the above links + + def english_page(self): + """ + This finds the english version of this page + """ + language = self.get_language() + + if language == 'en': + return self + elif language == 'fr': + return type(self).objects.filter(french_link=self).first().specific + elif language == 'es': + return type(self).objects.filter(spanish_link=self).first().specific + + + # We need a method to find a version of this page for each alternative language. + # These all work the same way. They firstly find the main version of the page + # (english), then from there they can just follow the link to the correct page. + + def french_page(self): + """ + This finds the french version of this page + """ + english_page = self.english_page() + + if english_page and english_page.french_link: + return english_page.french_link.specific + + def spanish_page(self): + """ + This finds the spanish version of this page + """ + english_page = self.english_page() + + if english_page and english_page.spanish_link: + return english_page.spanish_link.specific + + class Meta: + abstract = True + + + class AboutPage(Page, TranslatablePageMixin): + ... + + + class ContactPage(Page, TranslatablePageMixin): + ... + + +You can make use of these methods in your template by doing: + +.. code-block:: django + + {% if self.english_page and self.get_language != 'en' %} + <a href="{{ self.english_page.url }}">{% trans "View in English" %}</a> + {% endif %} + + {% if self.french_page and self.get_language != 'fr' %} + <a href="{{ self.french_page.url }}">{% trans "View in French" %}</a> + {% endif %} + + {% if self.spanish_page and self.get_language != 'es' %} + <a href="{{ self.spanish_page.url }}">{% trans "View in Spanish" %}</a> + {% endif %} diff --git a/docs/performance.rst b/docs/howto/performance.rst similarity index 100% rename from docs/performance.rst rename to docs/howto/performance.rst diff --git a/docs/settings.rst b/docs/howto/settings.rst similarity index 99% rename from docs/settings.rst rename to docs/howto/settings.rst index 898fb3cb3..59faa6a29 100644 --- a/docs/settings.rst +++ b/docs/howto/settings.rst @@ -141,7 +141,7 @@ Wagtail Apps Search framework for Page content. See :ref:`search`. ``wagtailredirects`` - Admin interface for creating arbitrary redirects on your site. See :ref:`redirects`. + Admin interface for creating arbitrary redirects on your site. ``wagtailforms`` Models for creating forms on your pages and viewing submissions. See :ref:`form_builder`. diff --git a/docs/images/screen02_dashboard_editor.png b/docs/images/screen02_dashboard_editor.png deleted file mode 100644 index 6d85bc824..000000000 Binary files a/docs/images/screen02_dashboard_editor.png and /dev/null differ diff --git a/docs/images/screen03_explorer_menu.png b/docs/images/screen03_explorer_menu.png deleted file mode 100644 index 23588e097..000000000 Binary files a/docs/images/screen03_explorer_menu.png and /dev/null differ diff --git a/docs/images/screen04_search_screen.png b/docs/images/screen04_search_screen.png deleted file mode 100644 index 0f37aa81d..000000000 Binary files a/docs/images/screen04_search_screen.png and /dev/null differ diff --git a/docs/images/screen05_explorer_page.png b/docs/images/screen05_explorer_page.png deleted file mode 100644 index 0a371c5f3..000000000 Binary files a/docs/images/screen05_explorer_page.png and /dev/null differ diff --git a/docs/images/screen06_explorer_page_arrow.png b/docs/images/screen06_explorer_page_arrow.png deleted file mode 100644 index 3f1294939..000000000 Binary files a/docs/images/screen06_explorer_page_arrow.png and /dev/null differ diff --git a/docs/images/screen07_explorer_page_breadcrumb.png b/docs/images/screen07_explorer_page_breadcrumb.png deleted file mode 100644 index 7ddca5607..000000000 Binary files a/docs/images/screen07_explorer_page_breadcrumb.png and /dev/null differ diff --git a/docs/images/screen08.5_reorder_page_handles.png b/docs/images/screen08.5_reorder_page_handles.png deleted file mode 100644 index 6ab53c0cc..000000000 Binary files a/docs/images/screen08.5_reorder_page_handles.png and /dev/null differ diff --git a/docs/images/screen08_add_page_button.png b/docs/images/screen08_add_page_button.png deleted file mode 100644 index f5f5c43d6..000000000 Binary files a/docs/images/screen08_add_page_button.png and /dev/null differ diff --git a/docs/images/screen09_page_type_selection.png b/docs/images/screen09_page_type_selection.png deleted file mode 100644 index 23152c3a9..000000000 Binary files a/docs/images/screen09_page_type_selection.png and /dev/null differ diff --git a/docs/images/screen10_blank_page_edit_screen.png b/docs/images/screen10_blank_page_edit_screen.png deleted file mode 100644 index d2b5a477c..000000000 Binary files a/docs/images/screen10_blank_page_edit_screen.png and /dev/null differ diff --git a/docs/images/screen11_rich_text_field.png b/docs/images/screen11_rich_text_field.png deleted file mode 100644 index a5840d01f..000000000 Binary files a/docs/images/screen11_rich_text_field.png and /dev/null differ diff --git a/docs/images/screen12_edit_screen_overview.png b/docs/images/screen12_edit_screen_overview.png deleted file mode 100644 index e4b55ebaf..000000000 Binary files a/docs/images/screen12_edit_screen_overview.png and /dev/null differ diff --git a/docs/images/screen13_publish_menu.png b/docs/images/screen13_publish_menu.png deleted file mode 100644 index 28715b5e4..000000000 Binary files a/docs/images/screen13_publish_menu.png and /dev/null differ diff --git a/docs/images/screen14_add_carousel_button.png b/docs/images/screen14_add_carousel_button.png deleted file mode 100644 index ab8f3df22..000000000 Binary files a/docs/images/screen14_add_carousel_button.png and /dev/null differ diff --git a/docs/images/screen15_carousel_form.png b/docs/images/screen15_carousel_form.png deleted file mode 100644 index c0f6070dc..000000000 Binary files a/docs/images/screen15_carousel_form.png and /dev/null differ diff --git a/docs/images/screen16_selecting_image_from_library.png b/docs/images/screen16_selecting_image_from_library.png deleted file mode 100644 index 2b4473c89..000000000 Binary files a/docs/images/screen16_selecting_image_from_library.png and /dev/null differ diff --git a/docs/images/screen19_link_form.png b/docs/images/screen19_link_form.png deleted file mode 100644 index 3e3f3aaf3..000000000 Binary files a/docs/images/screen19_link_form.png and /dev/null differ diff --git a/docs/images/screen21_video_in_editor.png b/docs/images/screen21_video_in_editor.png deleted file mode 100644 index d69c38d8f..000000000 Binary files a/docs/images/screen21_video_in_editor.png and /dev/null differ diff --git a/docs/images/screen22_required_field.png b/docs/images/screen22_required_field.png deleted file mode 100644 index 793cec8ca..000000000 Binary files a/docs/images/screen22_required_field.png and /dev/null differ diff --git a/docs/images/screen23_validation_error.png b/docs/images/screen23_validation_error.png deleted file mode 100644 index 0cb85223d..000000000 Binary files a/docs/images/screen23_validation_error.png and /dev/null differ diff --git a/docs/images/screen24_multiple_items_closed.png b/docs/images/screen24_multiple_items_closed.png deleted file mode 100644 index d2fb2f9cb..000000000 Binary files a/docs/images/screen24_multiple_items_closed.png and /dev/null differ diff --git a/docs/images/screen25_multiple_items_open.png b/docs/images/screen25_multiple_items_open.png deleted file mode 100644 index f586b8e39..000000000 Binary files a/docs/images/screen25_multiple_items_open.png and /dev/null differ diff --git a/docs/images/screen26_reordering_multiple_items.png b/docs/images/screen26_reordering_multiple_items.png deleted file mode 100644 index 61ae8a543..000000000 Binary files a/docs/images/screen26_reordering_multiple_items.png and /dev/null differ diff --git a/docs/images/screen28_docs_form.png b/docs/images/screen28_docs_form.png deleted file mode 100644 index c6c6693ca..000000000 Binary files a/docs/images/screen28_docs_form.png and /dev/null differ diff --git a/docs/images/screen29_documents_page.png b/docs/images/screen29_documents_page.png deleted file mode 100644 index 0f3d10e85..000000000 Binary files a/docs/images/screen29_documents_page.png and /dev/null differ diff --git a/docs/images/screen30_documents_edit_page.png b/docs/images/screen30_documents_edit_page.png deleted file mode 100644 index 1c66f1672..000000000 Binary files a/docs/images/screen30_documents_edit_page.png and /dev/null differ diff --git a/docs/index.rst b/docs/index.rst index 76f8c9444..0ce7b02fa 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -9,24 +9,10 @@ It supports Django 1.6.2+ on Python 2.6, 2.7, 3.2, 3.3 and 3.4. Django 1.7 suppo :maxdepth: 3 gettingstarted - settings - building_your_site/index - editing_api - snippets - search/index - form_builder - model_recipes - routable_page - advanced_topics - deploying - performance - private_pages - static_site_generation - frontend_cache_purging - sitemap_generation - management_commands - contributing + core_components/index + contrib_components/index + howto/index + reference/index support - roadmap editor_manual/index releases/index diff --git a/docs/reference/index.rst b/docs/reference/index.rst new file mode 100644 index 000000000..c144fc6b1 --- /dev/null +++ b/docs/reference/index.rst @@ -0,0 +1,8 @@ +========= +Reference +========= + +.. toctree:: + :maxdepth: 2 + + management_commands diff --git a/docs/management_commands.rst b/docs/reference/management_commands.rst similarity index 100% rename from docs/management_commands.rst rename to docs/reference/management_commands.rst diff --git a/docs/releases/0.5.rst b/docs/releases/0.5.rst index 76b0762de..6f4912de5 100644 --- a/docs/releases/0.5.rst +++ b/docs/releases/0.5.rst @@ -1,6 +1,6 @@ -========================================== -Wagtail 0.5 release notes - IN DEVELOPMENT -========================================== +========================= +Wagtail 0.5 release notes +========================= .. contents:: :local: @@ -13,7 +13,23 @@ What's new Multiple image uploader ~~~~~~~~~~~~~~~~~~~~~~~ -The image uploader UI has been improved to allow multiples to be uploaded quickly. +The image uploader UI has been improved to allow multiple images to be uploaded at once. + + +Image feature detection +~~~~~~~~~~~~~~~~~~~~~~~ + +Wagtail can now apply face and feature detection on images using `OpenCV <http://opencv.org/>`_, and use this to intelligently crop images. + +:ref:`image_feature_detection` + + +Using images outside Wagtail +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In normal use, Wagtail will generate resized versions of images at the point that they are referenced on a template, which means that those images are not easily accessible for use outside of Wagtail, such as displaying them on external sites. Wagtail now provides a way to obtain URLs to your images, at any size. + +:ref:`using_images_outside_wagtail` RoutablePage @@ -21,7 +37,21 @@ RoutablePage A ``RoutablePage`` model has been added to allow embedding Django-style URL routing within a page. -:ref:`routable_page` +:ref:`routable_page_mixin` + + +Usage stats for images, documents and snippets +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It's now easier to find where a particular image, document or snippet is being used on your site. + +Set the ``WAGTAIL_USAGE_COUNT_ENABLED`` setting to ``True`` and an icon will appear on the edit page showing you which pages they have been used on. + + +Copy Page action +~~~~~~~~~~~~~~~~ + +The explorer interface now offers the ability to copy pages, with or without subpages. Minor features @@ -58,9 +88,45 @@ Bug fixes * Updates to tag fields are now properly committed to the database when publishing directly from the page edit interface. -Backwards incompatible changes -============================== +Upgrade considerations +====================== + +Urlconf entries for ``/admin/images/``, ``/admin/embeds/`` etc need to be removed +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you created a Wagtail project prior to the release of Wagtail 0.3, it is likely to contain the following entries in its ``urls.py``: + + .. code-block:: python + + # TODO: some way of getting wagtailimages to register itself within wagtailadmin so that we + # don't have to define it separately here + url(r'^admin/images/', include(wagtailimages_urls)), + url(r'^admin/embeds/', include(wagtailembeds_urls)), + url(r'^admin/documents/', include(wagtaildocs_admin_urls)), + url(r'^admin/snippets/', include(wagtailsnippets_urls)), + url(r'^admin/search/', include(wagtailsearch_admin_urls)), + url(r'^admin/users/', include(wagtailusers_urls)), + url(r'^admin/redirects/', include(wagtailredirects_urls)), -Deprecated features -=================== +These entries (and the corresponding ``from wagtail.wagtail* import ...`` lines) need to be removed from ``urls.py``. (The entry for ``/admin/`` should be left in, however.) + +Since Wagtail 0.3, the wagtailadmin module automatically takes care of registering these URL subpaths, so these entries are redundant, and these urlconf modules are not guaranteed to remain stable and backwards-compatible in future. Leaving these entries in place will now cause an ``ImproperlyConfigured`` exception to be thrown. + + +New fields on Image and Rendition models +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Several new fields have been added to the Image and Rendition models to support :ref:`image_feature_detection`. These will be added to the database when you run ``./manage.py migrate``. If you have defined a custom image model (by extending the ``wagtailimages.AbstractImage`` and ``wagtailimages.AbstractRendition`` classes and specifying ``WAGTAILIMAGES_IMAGE_MODEL`` in settings), the change needs to be applied to that model's database table too. Running the command:: + + ./manage.py schemamigration myapp --auto add_image_focal_point_fields + +(with 'myapp' replaced with your app name) will generate the necessary migration file. + + +South upgraded to 1.0 +~~~~~~~~~~~~~~~~~~~~~ + +In preparation for Django 1.7 support in a future release, Wagtail now depends on South 1.0, and its migration files have been moved from ``migrations`` to ``south_migrations``. Older versions of South will fail to find the migrations in the new location. + +If your project's requirements file (most commonly requirements.txt or requirements/base.txt) references a specific older version of South, this must be updated to South 1.0. diff --git a/docs/releases/0.6.rst b/docs/releases/0.6.rst new file mode 100644 index 000000000..aa0b29960 --- /dev/null +++ b/docs/releases/0.6.rst @@ -0,0 +1,31 @@ +========================================== +Wagtail 0.6 release notes - IN DEVELOPMENT +========================================== + +.. contents:: + :local: + :depth: 1 + + +What's new +========== + +Minor features +~~~~~~~~~~~~~~ + * A new template tag has been added for reversing URLs inside routable pages. See :ref:`routablepageurl_template_tag`. + * RoutablePage can now be used as a mixin. See :class:`wagtail.contrib.wagtailroutablepage.models.RoutablePageMixin`. + +Bug fixes +~~~~~~~~~ + + * Page URL generation now returns correct URLs for sites that have the main 'serve' view rooted somewhere other than '/'. + +Upgrade considerations +====================== + + +Deprecated features +=================== + + * The ``wagtail.wagtailsearch.indexed`` module has been renamed to ``wagtail.wagtailsearch.index`` + \ No newline at end of file diff --git a/docs/releases/index.rst b/docs/releases/index.rst index 039b5d60e..a9760c239 100644 --- a/docs/releases/index.rst +++ b/docs/releases/index.rst @@ -4,6 +4,8 @@ Release notes .. toctree:: :maxdepth: 1 + roadmap + 0.6 0.5 0.4.1 0.4 diff --git a/docs/roadmap.rst b/docs/releases/roadmap.rst similarity index 100% rename from docs/roadmap.rst rename to docs/releases/roadmap.rst diff --git a/docs/routable_page.rst b/docs/routable_page.rst deleted file mode 100644 index 438c9625e..000000000 --- a/docs/routable_page.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _routable_page: - -==================================== -Embedding URL configuration in Pages -==================================== - -.. versionadded:: 0.5 - -The ``RoutablePage`` class provides a convenient way for a page to respond on multiple sub-URLs with different views. For example, a blog section on a site might provide several different types of index page at URLs like ``/blog/2013/06/``, ``/blog/authors/bob/``, ``/blog/tagged/python/``, all served by the same ``BlogIndex`` page. - -A ``RoutablePage`` exists within the page tree like any other page, but URL paths underneath it are checked against a list of patterns, using Django's urlconf scheme. If none of the patterns match, control is passed to subpages as usual (or failing that, a 404 error is thrown). - - -The basics -========== - -To use ``RoutablePage``, you need to make your class inherit from :class:`wagtail.contrib.wagtailroutablepage.models.RoutablePage` and configure the ``subpage_urls`` attribute with your URL configuration. - -Here's an example of an ``EventPage`` with three views: - -.. code-block:: python - - from django.conf.urls import url - - from wagtail.contrib.wagtailroutablepage.models import RoutablePage - - - class EventPage(RoutablePage): - subpage_urls = ( - url(r'^$', 'current_events', name='current_events'), - url(r'^past/$', 'past_events', name='past_events'), - url(r'^year/(\d+)/$', 'events_for_year', name='events_for_year'), - ) - - def current_events(self, request): - """ - View function for the current events page - """ - ... - - def past_events(self, request): - """ - View function for the current events page - """ - ... - - def events_for_year(self, request): - """ - View function for the events for year page - """ - ... - - -The ``RoutablePage`` class -========================== - -.. automodule:: wagtail.contrib.wagtailroutablepage.models -.. autoclass:: RoutablePage - - .. autoattribute:: subpage_urls - - Example: - - .. code-block:: python - - from django.conf.urls import url - - subpage_urls = ( - url(r'^$', 'serve', name='main'), - url(r'^archive/$', 'archive', name='archive'), - ) - - .. automethod:: resolve_subpage - - Example: - - .. code-block:: python - - view, args, kwargs = page.resolve_subpage('/past/') - response = view(request, *args, **kwargs) - - .. automethod:: reverse_subpage - - Example: - - .. code-block:: python - - url = page.url + page.reverse_subpage('events_for_year', args=('2014', )) diff --git a/requirements-dev.txt b/requirements-dev.txt index b69c5d4e0..6bc561b0c 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,3 +2,4 @@ coverage==3.7.1 flake8==2.2.1 mock==1.0.1 +python-dateutil==2.2 diff --git a/scripts/install/debian.sh b/scripts/install/debian.sh index 14a10ce4d..9c16894bf 100644 --- a/scripts/install/debian.sh +++ b/scripts/install/debian.sh @@ -111,7 +111,7 @@ EOF mkdir -p /etc/uwsgi/vassals/ ln -s $PROJECT_ROOT/$PROJECT/uwsgi_conf.ini /etc/uwsgi/vassals/ -curl -o /etc/init.d/uwsgi https://raw.github.com/torchbox/wagtail/master/scripts/install/uwsgi-init.d +curl -o /etc/init.d/uwsgi https://raw.githubusercontent.com/torchbox/wagtail/master/scripts/install/uwsgi-init.d mkdir /var/log/uwsgi chmod 755 /etc/init.d/uwsgi update-rc.d uwsgi defaults diff --git a/setup.py b/setup.py index bf9a35500..109db840a 100644 --- a/setup.py +++ b/setup.py @@ -47,7 +47,7 @@ if not PY3: setup( name='wagtail', - version='0.4', + version='0.5', description='A Django content management system focused on flexibility and user experience', author='Matthew Westcott', author_email='matthew.westcott@torchbox.com', diff --git a/tox.ini b/tox.ini index 30632a221..c99af4570 100644 --- a/tox.ini +++ b/tox.ini @@ -14,6 +14,7 @@ base = requests==2.3.0 elasticsearch==1.1.0 mock==1.0.1 + python-dateutil==2.2 Embedly coverage diff --git a/wagtail/contrib/wagtailroutablepage/models.py b/wagtail/contrib/wagtailroutablepage/models.py index 926e5f48a..88379b37a 100644 --- a/wagtail/contrib/wagtailroutablepage/models.py +++ b/wagtail/contrib/wagtailroutablepage/models.py @@ -8,9 +8,10 @@ from wagtail.wagtailcore.models import Page from wagtail.wagtailcore.url_routing import RouteResult -class RoutablePage(Page): +class RoutablePageMixin(object): """ - This class extends Page by adding methods to allow urlconfs to be embedded inside pages + This class can be mixed in to a Page subclass to allow urlconfs to be + embedded inside pages. """ #: Set this to a tuple of ``django.conf.urls.url`` objects. subpage_urls = None @@ -59,7 +60,7 @@ class RoutablePage(Page): except Http404: pass - return super(RoutablePage, self).route(request, path_components) + return super(RoutablePageMixin, self).route(request, path_components) def serve(self, request, view, args, kwargs): return view(request, *args, **kwargs) @@ -68,6 +69,13 @@ class RoutablePage(Page): view, args, kwargs = self.resolve_subpage('/') return view(*args, **kwargs) + +class RoutablePage(RoutablePageMixin, Page): + """ + This class extends Page by adding methods to allow urlconfs + to be embedded inside pages + """ + is_abstract = True class Meta: diff --git a/wagtail/contrib/wagtailroutablepage/templatetags/__init__.py b/wagtail/contrib/wagtailroutablepage/templatetags/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/wagtail/contrib/wagtailroutablepage/templatetags/wagtailroutablepage_tags.py b/wagtail/contrib/wagtailroutablepage/templatetags/wagtailroutablepage_tags.py new file mode 100644 index 000000000..6af38c245 --- /dev/null +++ b/wagtail/contrib/wagtailroutablepage/templatetags/wagtailroutablepage_tags.py @@ -0,0 +1,24 @@ +from django import template + + +register = template.Library() + + +@register.simple_tag(takes_context=True) +def routablepageurl(context, page, url_name, *args, **kwargs): + """ + ``routablepageurl`` is similar to ``pageurl``, but works with + ``RoutablePage``\s. It behaves like a hybrid between the built-in + ``reverse``, and ``pageurl`` from Wagtail. + + ``page`` is the RoutablePage that URLs will be generated from. + + ``url_name`` is a URL name defined in ``page.subpage_urls``. + + Positional arguments and keyword arguments should be passed as normal + positional arguments and keyword arguments. + """ + request = context['request'] + base_url = page.relative_url(request.site) + routed_url = page.reverse_subpage(url_name, args=args, kwargs=kwargs) + return base_url + routed_url diff --git a/wagtail/contrib/wagtailroutablepage/tests.py b/wagtail/contrib/wagtailroutablepage/tests.py index 505df45b3..1aa8f53d1 100644 --- a/wagtail/contrib/wagtailroutablepage/tests.py +++ b/wagtail/contrib/wagtailroutablepage/tests.py @@ -1,7 +1,8 @@ -from django.test import TestCase +from django.test import TestCase, RequestFactory -from wagtail.wagtailcore.models import Page +from wagtail.wagtailcore.models import Page, Site from wagtail.tests.models import RoutablePageTest, routable_page_external_view +from wagtail.contrib.wagtailroutablepage.templatetags.wagtailroutablepage_tags import routablepageurl class TestRoutablePage(TestCase): @@ -80,3 +81,35 @@ class TestRoutablePage(TestCase): response = self.client.get(self.routable_page.url + 'external/joe-bloggs/') self.assertContains(response, "EXTERNAL VIEW: joe-bloggs") + + +class TestRoutablePageTemplateTag(TestRoutablePage): + def setUp(self): + super(TestRoutablePageTemplateTag, self).setUp() + self.rf = RequestFactory() + self.request = self.rf.get(self.routable_page.url) + self.request.site = Site.find_for_request(self.request) + self.context = {'request': self.request} + + def test_templatetag_reverse_main_view(self): + url = routablepageurl(self.context, self.routable_page, + 'main') + self.assertEqual(url, self.routable_page.url) + + def test_templatetag_reverse_archive_by_year_view(self): + url = routablepageurl(self.context, self.routable_page, + 'archive_by_year', '2014') + + self.assertEqual(url, self.routable_page.url + 'archive/year/2014/') + + def test_templatetag_reverse_archive_by_author_view(self): + url = routablepageurl(self.context, self.routable_page, + 'archive_by_author', author_slug='joe-bloggs') + + self.assertEqual(url, self.routable_page.url + 'archive/author/joe-bloggs/') + + def test_templatetag_reverse_external_view(self): + url = routablepageurl(self.context, self.routable_page, + 'external_view', 'joe-bloggs') + + self.assertEqual(url, self.routable_page.url + 'external/joe-bloggs/') diff --git a/wagtail/contrib/wagtailstyleguide/locale/en/LC_MESSAGES/django.po b/wagtail/contrib/wagtailstyleguide/locale/en/LC_MESSAGES/django.po index 9e52f6985..661d514a3 100644 --- a/wagtail/contrib/wagtailstyleguide/locale/en/LC_MESSAGES/django.po +++ b/wagtail/contrib/wagtailstyleguide/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:57+0000\n" +"POT-Creation-Date: 2014-08-01 16:40+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" @@ -33,15 +33,15 @@ msgstr "" msgid "Error message" msgstr "" -#: wagtail_hooks.py:20 templates/wagtailstyleguide/base.html:12 -#: templates/wagtailstyleguide/base.html:16 +#: wagtail_hooks.py:21 templates/wagtailstyleguide/base.html:10 +#: templates/wagtailstyleguide/base.html:14 msgid "Styleguide" msgstr "" -#: templates/wagtailstyleguide/base.html:282 +#: templates/wagtailstyleguide/base.html:354 msgid "Save" msgstr "" -#: templates/wagtailstyleguide/base.html:282 +#: templates/wagtailstyleguide/base.html:354 msgid "Delete image" msgstr "" diff --git a/wagtail/contrib/wagtailstyleguide/templates/wagtailstyleguide/base.html b/wagtail/contrib/wagtailstyleguide/templates/wagtailstyleguide/base.html index abdb887ce..667798c80 100644 --- a/wagtail/contrib/wagtailstyleguide/templates/wagtailstyleguide/base.html +++ b/wagtail/contrib/wagtailstyleguide/templates/wagtailstyleguide/base.html @@ -1,7 +1,5 @@ {% extends "wagtailadmin/base.html" %} -{% load wagtailadmin_tags %} -{% load compress i18n %} -{% load gravatar %} +{% load wagtailadmin_tags compress i18n static gravatar %} {% block extra_css %} {% compress css %} @@ -32,6 +30,7 @@ <li><a href="#editor">Page editor</a></li> <li><a href="#tabs">Tabs</a></li> <li><a href="#breadcrumbs">Breadcrumbs</a></li> + <li><a href="#progress">Progress indicators</a></li> <li><a href="#misc">Misc formatters</a></li> <li><a href="#icons">Icons</a></li> </ul> @@ -408,6 +407,20 @@ </section> + <section id="progress"> + <h2>Progress indicators</h2> + + <div id="progress-example" class="progress active"> + <div class="bar">60%</div> + </div> + + <p> </p> + + <div id="progress-example2" class="progress active"> + <div class="bar" style="width: 50%;">50%</div> + </div> + </section> + <section id="misc"> <h2>Misc formatters</h2> <h3>Avatar icons</h3> @@ -419,6 +432,13 @@ <div class="status-tag primary">Primary tag</div> <div class="status-tag">Secondary tag</div> + + <h3>Loading mask</h3> + <p>Add the following <code>div</code> around any items you wish to display with a spinner overlay and fading out</p> + <p>Remove the "loading" class to disable the effect</p> + <div class="loading-mask loading" style="width:200px"> + <img src="{% static 'wagtailadmin/images/wagtail-logo.svg' %}" width="200" /> + </div> </section> <section id="icons"> @@ -501,7 +521,16 @@ {% block extra_js %} <script> $(function(){ - + (function runprogress(){ + var to = setTimeout(function(){ + runprogress(); + clearTimeout(to); + var to2 = setTimeout(function(){ + $('#progress-example .bar').css('width', '20%'); + }, 2000); + }, 3000); + $('#progress-example .bar').css('width', '80%'); + })(); }) </script> {% endblock %} \ No newline at end of file diff --git a/wagtail/tests/fixtures/test.json b/wagtail/tests/fixtures/test.json index 39fe6e34b..00e621f48 100644 --- a/wagtail/tests/fixtures/test.json +++ b/wagtail/tests/fixtures/test.json @@ -562,6 +562,14 @@ "submit_time": "2014-01-01T12:00:00.000Z" } }, +{ + "pk": 1, + "model": "tests.AdvertPlacement", + "fields": { + "page": 2, + "advert": 1 + } +}, { "pk": 1, "model": "tests.advert", @@ -578,17 +586,6 @@ "created_at": "2014-01-01T12:00:00.000Z" } }, -{ - "pk": 1, - "model": "wagtailimages.Image", - "fields": { - "title": "test image", - "created_at": "2014-01-01T12:00:00.000Z", - "width": 0, - "height": 0 - } -}, - { "pk": 1, "model": "wagtailcore.pageviewrestriction", diff --git a/wagtail/tests/models.py b/wagtail/tests/models.py index 4cc966204..27a89b307 100644 --- a/wagtail/tests/models.py +++ b/wagtail/tests/models.py @@ -17,7 +17,7 @@ from wagtail.wagtailimages.edit_handlers import ImageChooserPanel from wagtail.wagtaildocs.edit_handlers import DocumentChooserPanel from wagtail.wagtailforms.models import AbstractEmailForm, AbstractFormField from wagtail.wagtailsnippets.models import register_snippet -from wagtail.wagtailsearch import indexed +from wagtail.wagtailsearch import index from wagtail.contrib.wagtailroutablepage.models import RoutablePage @@ -325,9 +325,11 @@ FormPage.content_panels = [ ] -# Snippets # Snippets +class AdvertPlacement(models.Model): + page = ParentalKey('wagtailcore.Page', related_name='advert_placements') + advert = models.ForeignKey('tests.Advert', related_name='+') @python_2_unicode_compatible class Advert(models.Model): @@ -385,19 +387,19 @@ class BusinessChild(Page): subpage_types = [] -class SearchTest(models.Model, indexed.Indexed): +class SearchTest(models.Model, index.Indexed): title = models.CharField(max_length=255) content = models.TextField() live = models.BooleanField(default=False) published_date = models.DateField(null=True) search_fields = [ - indexed.SearchField('title', partial_match=True), - indexed.SearchField('content'), - indexed.SearchField('callable_indexed_field'), - indexed.FilterField('title'), - indexed.FilterField('live'), - indexed.FilterField('published_date'), + index.SearchField('title', partial_match=True), + index.SearchField('content'), + index.SearchField('callable_indexed_field'), + index.FilterField('title'), + index.FilterField('live'), + index.FilterField('published_date'), ] def callable_indexed_field(self): @@ -409,12 +411,12 @@ class SearchTestChild(SearchTest): extra_content = models.TextField() search_fields = SearchTest.search_fields + [ - indexed.SearchField('subtitle', partial_match=True), - indexed.SearchField('extra_content'), + index.SearchField('subtitle', partial_match=True), + index.SearchField('extra_content'), ] -class SearchTestOldConfig(models.Model, indexed.Indexed): +class SearchTestOldConfig(models.Model, index.Indexed): """ This tests that the Indexed class can correctly handle models that use the old "indexed_fields" configuration format. @@ -435,7 +437,7 @@ class SearchTestOldConfig(models.Model, indexed.Indexed): } -class SearchTestOldConfigList(models.Model, indexed.Indexed): +class SearchTestOldConfigList(models.Model, index.Indexed): """ This tests that the Indexed class can correctly handle models that use the old "indexed_fields" configuration format using a list. diff --git a/wagtail/tests/non_root_urls.py b/wagtail/tests/non_root_urls.py new file mode 100644 index 000000000..badea652a --- /dev/null +++ b/wagtail/tests/non_root_urls.py @@ -0,0 +1,19 @@ +"""An alternative urlconf module where Wagtail front-end URLs +are rooted at '/site/' rather than '/'""" + +from django.conf.urls import patterns, include, url + +from wagtail.wagtailcore import urls as wagtail_urls +from wagtail.wagtailadmin import urls as wagtailadmin_urls +from wagtail.wagtaildocs import urls as wagtaildocs_urls +from wagtail.wagtailimages import urls as wagtailimages_urls +from wagtail.wagtailsearch import urls as wagtailsearch_urls + + +urlpatterns = patterns('', + url(r'^admin/', include(wagtailadmin_urls)), + url(r'^search/', include(wagtailsearch_urls)), + url(r'^documents/', include(wagtaildocs_urls)), + url(r'^images/', include(wagtailimages_urls)), + url(r'^site/', include(wagtail_urls)), +) diff --git a/wagtail/tests/urls.py b/wagtail/tests/urls.py index c9ca98bba..7df625dcc 100644 --- a/wagtail/tests/urls.py +++ b/wagtail/tests/urls.py @@ -3,6 +3,7 @@ from django.conf.urls import patterns, include, url from wagtail.wagtailcore import urls as wagtail_urls from wagtail.wagtailadmin import urls as wagtailadmin_urls from wagtail.wagtaildocs import urls as wagtaildocs_urls +from wagtail.wagtailimages import urls as wagtailimages_urls from wagtail.wagtailsearch import urls as wagtailsearch_urls from wagtail.contrib.wagtailsitemaps.views import sitemap @@ -11,6 +12,7 @@ urlpatterns = patterns('', url(r'^admin/', include(wagtailadmin_urls)), url(r'^search/', include(wagtailsearch_urls)), url(r'^documents/', include(wagtaildocs_urls)), + url(r'^images/', include(wagtailimages_urls)), url(r'^sitemap\.xml$', sitemap), diff --git a/wagtail/utils/deprecation.py b/wagtail/utils/deprecation.py index 24dc4e589..4a5fb9382 100644 --- a/wagtail/utils/deprecation.py +++ b/wagtail/utils/deprecation.py @@ -4,3 +4,7 @@ class RemovedInWagtail06Warning(DeprecationWarning): class RemovedInWagtail07Warning(PendingDeprecationWarning): pass + + +class RemovedInWagtail08Warning(PendingDeprecationWarning): + pass diff --git a/wagtail/wagtailadmin/forms.py b/wagtail/wagtailadmin/forms.py index e9b10f63c..866ce66a1 100644 --- a/wagtail/wagtailadmin/forms.py +++ b/wagtail/wagtailadmin/forms.py @@ -2,7 +2,8 @@ from django import forms from django.contrib.auth import get_user_model from django.contrib.auth.forms import AuthenticationForm, PasswordResetForm from django.utils.translation import ugettext as _ -from django.utils.translation import ugettext_lazy +from django.utils.translation import ungettext, ugettext_lazy + class SearchForm(forms.Form): def __init__(self, *args, **kwargs): @@ -77,6 +78,53 @@ class PasswordResetForm(PasswordResetForm): return cleaned_data +class CopyForm(forms.Form): + def __init__(self, *args, **kwargs): + # CopyPage must be passed a 'page' kwarg indicating the page to be copied + self.page = kwargs.pop('page') + can_publish = kwargs.pop('can_publish') + super(CopyForm, self).__init__(*args, **kwargs) + + self.fields['new_title'] = forms.CharField(initial=self.page.title, label=_("New title")) + self.fields['new_slug'] = forms.SlugField(initial=self.page.slug, label=_("New slug")) + + pages_to_copy = self.page.get_descendants(inclusive=True) + subpage_count = pages_to_copy.count() - 1 + if subpage_count > 0: + self.fields['copy_subpages'] = forms.BooleanField( + required=False, initial=True, label=_("Copy subpages"), + help_text=ungettext( + "This will copy %(count)s subpage.", + "This will copy %(count)s subpages.", + subpage_count) % {'count': subpage_count}) + + if can_publish: + pages_to_publish_count = pages_to_copy.live().count() + if pages_to_publish_count > 0: + # In the specific case that there are no subpages, customise the field label and help text + if subpage_count == 0: + label = _("Publish copied page") + help_text = _("This page is live. Would you like to publish its copy as well?") + else: + label = _("Publish copies") + help_text = ungettext( + "%(count)s of the pages being copied is live. Would you like to publish its copy?", + "%(count)s of the pages being copied are live. Would you like to publish their copies?", + pages_to_publish_count) % {'count': pages_to_publish_count} + + self.fields['publish_copies'] = forms.BooleanField( + required=False, initial=True, label=label, help_text=help_text + ) + + def clean_new_slug(self): + # Make sure the slug isn't already in use + slug = self.cleaned_data['new_slug'] + + if self.page.get_siblings(inclusive=True).filter(slug=slug).count(): + raise forms.ValidationError(_("This slug is already in use")) + return slug + + class PageViewRestrictionForm(forms.Form): restriction_type = forms.ChoiceField(label="Visibility", choices=[ ('none', ugettext_lazy("Public")), diff --git a/wagtail/wagtailadmin/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/bg/LC_MESSAGES/django.po index 562920910..1a6739d18 100644 --- a/wagtail/wagtailadmin/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/bg/LC_MESSAGES/django.po @@ -1,23 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# LyuboslavPetrov <petrov.lyuboslav@gmail.com>, 2014 -# LyuboslavPetrov <petrov.lyuboslav@gmail.com>, 2014 +# Lyuboslav Petrov <petrov.lyuboslav@gmail.com>, 2014 +# Lyuboslav Petrov <petrov.lyuboslav@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" -"language/bg/)\n" -"Language: bg\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/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" #: edit_handlers.py:627 @@ -28,58 +27,100 @@ msgstr "" msgid "Common page configuration" msgstr "" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Фраза за търсене" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Въведете вашият имейл адрес за да си възстановите паролата" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Моля въведете вашият имейл адрес." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Не можете да възстановите паролата си тук, понеже акаунта ви се менижира от " -"друг сървър." +msgstr "Не можете да възстановите паролата си тук, понеже акаунта ви се менижира от друг сървър." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Този имейл не е разпознат." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Публикувай" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Този слъг е вече в употреба" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "Този имейл не е разпознат." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Работно Табло" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Меню" @@ -92,9 +133,7 @@ msgstr "Добре дошъл в %(site_name)s Wagtail CMS" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Това е вашето работно табло, където ще бъде показана полезна информация за " -"контент, който сте създали." +msgstr "Това е вашето работно табло, където ще бъде показана полезна информация за контент, който сте създали." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -126,10 +165,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Снимката за вашият Аватар е предоставена от Gravatar и е свързана с вашия " -"имейл адрес. Със сметка в Gravatar можете да зададете аватар за произволен " -"брой други имейл адреси, които използвате." +msgstr "Снимката за вашият Аватар е предоставена от Gravatar и е свързана с вашия имейл адрес. Със сметка в Gravatar можете да зададете аватар за произволен брой други имейл адреси, които използвате." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -156,9 +192,7 @@ msgstr "Смени парола" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"Вашата парола не може да бъде променена тук. Моля свържете се с " -"администратора на сайта." +msgstr "Вашата парола не може да бъде променена тук. Моля свържете се с администратора на сайта." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -232,12 +266,12 @@ msgstr "Имейл линк" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Търсене" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Файлов мениджър" @@ -251,12 +285,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Има едно съвпадение" -msgstr[1] "" -"\n" -"Има %(counter)s съвпадения" +msgstr[0] "\nИма едно съвпадение" +msgstr[1] "\nИма %(counter)s съвпадения" #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -301,7 +331,7 @@ msgstr "Надолу" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Изтрий" @@ -413,14 +443,8 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -" <span>%(total_pages)s</span> Страница\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_pages)s</span> Страници\n" -" " +msgstr[0] "\n <span>%(total_pages)s</span> Страница\n " +msgstr[1] "\n <span>%(total_pages)s</span> Страници\n " #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -432,12 +456,8 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -"<span>%(total_images)s</span> Изображение" -msgstr[1] "" -"\n" -"<span>%(total_images)s</span> Изображения" +msgstr[0] "\n<span>%(total_images)s</span> Изображение" +msgstr[1] "\n<span>%(total_images)s</span> Изображения" #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -449,12 +469,8 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -"<span>%(total_docs)s</span> Документ" -msgstr[1] "" -"\n" -"<span>%(total_docs)s</span> Документи" +msgstr[0] "\n<span>%(total_docs)s</span> Документ" +msgstr[1] "\n<span>%(total_docs)s</span> Документи" #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -513,9 +529,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Можете да редактирате страницата тук:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -525,12 +540,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " -msgstr "" -"\n" -"Преглед на '%(title)s', предоставена от %(submitted_by)s на %(submitted_on)s." +msgstr "\nПреглед на '%(title)s', предоставена от %(submitted_by)s на %(submitted_on)s." #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -576,26 +588,16 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" -" " -msgstr[0] "" -"\n" -" Това ще изтрие още една подстраница.\n" -" " -msgstr[1] "" -"\n" -" Това ще изтрие още %(descendant_count)s подстраници.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " +msgstr[0] "\n Това ще изтрие още една подстраница.\n " +msgstr[1] "\n Това ще изтрие още %(descendant_count)s подстраници.\n " #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Като алтернатива можете да прекратите публикуването на страницата. Това " -"премахва страницата от обществен достъп и ще можете да редактирате или да го " -"публикувате отново по-късно." +msgstr "Като алтернатива можете да прекратите публикуването на страницата. Това премахва страницата от обществен достъп и ще можете да редактирате или да го публикувате отново по-късно." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -626,9 +628,7 @@ msgstr "Сигурни ли сте, че желаете да преместит msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Сигурни ли сте, че искате да преместите страницата и принадлежащите към нея " -"дъщерни страници в '%(title)s'?" +msgstr "Сигурни ли сте, че искате да преместите страницата и принадлежащите към нея дъщерни страници в '%(title)s'?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -642,7 +642,7 @@ msgstr "Отмени публикуването на %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Отмени публикуването" @@ -658,6 +658,20 @@ msgstr "Да, отмени публикуването" msgid "Pages using" msgstr "Страници използващи" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -711,7 +725,7 @@ msgid "Exploring %(title)s" msgstr "Преглед на %(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Добави дъщерна страница" @@ -732,53 +746,50 @@ msgstr "Позволете подредба на дъщерни страници msgid "Drag" msgstr "Плъзнете" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Мениджър подстраници на '%(title)s'" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Мениджър" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Мениджър на дъщерни страници на '%(title)s'" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Добавете дъщерна страница към '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Добавете подстраница" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "Не бяха създадени никакви страници." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "Защо не <a href=\"%(add_page_url)s\">добавите една</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -" Страница %(page_number)s от %(num_pages)s.\n" -" " -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -788,7 +799,7 @@ msgstr "" msgid "Previous" msgstr "Предишно" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -809,7 +820,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Изберете нова страница родител за <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -819,13 +830,7 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -" Има едно съвпадение\n" -" " msgstr[1] "" -"\n" -" Има %(counter)s съвпадения\n" -" " #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -850,10 +855,7 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -" Страница %(page_number)s от %(num_pages)s.\n" -" " +msgstr "\n Страница %(page_number)s от %(num_pages)s.\n " #: templates/wagtailadmin/pages/search_results.html:54 #, python-format @@ -865,9 +867,8 @@ msgid "Enter a search term above" msgstr "Добавете дума за търсене по-горе" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Страници използващи" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -882,9 +883,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Търсене" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -947,9 +947,15 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Статус" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -965,9 +971,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Страница %(page_num)s от %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Потребители" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -986,121 +991,69 @@ msgid "Your password has been changed successfully!" msgstr "Паролата ви бе променена успешно!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "Паролата ви бе променена успешно!" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Този слъг е вече в употреба" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Страница '{0}' е публикувана." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Страница '{0}' е предоставена за модерация." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Страница '{0}' е създадена." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "Тази страница не можеше да бъде запазена поради валидационни грешки" +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Страница '{0}' обновена." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "Тази страница не можеше да бъде запазена поради валидационни грешки" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "Тази страница очаква да бъде модерирана" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Страница '{0}' е изтрита." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Страница '{0}' отменена от публикуване." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Страница '{0}' преместена." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "Страница '{0}' не очаква да бъде модерирана." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Страница '{0}' отхвърлена от публикуване." - -#~ msgid "Please type a valid time" -#~ msgstr "Моля въведете валидно време" - -#~ msgid "View draft" -#~ msgstr "Преглед на Чернова" - -#~ msgid "View live" -#~ msgstr "Преглед на живо" - -#~ msgid "Status:" -#~ msgstr "Статус:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "Къде желаете да създадете %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "Къде желаете да създадете това" - -#~ msgid "Create a new page" -#~ msgstr "Създадете нова страница" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "Вашата нова страница ще бъде записана в най-горното ниво на вашия сайт. " -#~ "Можете да я преместите, след като запазите." - -#~ msgid "More" -#~ msgstr "Повече" - -#~ msgid "Redirects" -#~ msgstr "Пренасочвания" - -#~ msgid "Editors Picks" -#~ msgstr "Избрано от Редактора" - -#~ msgid "Snippets" -#~ msgstr "Откъси от код" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "Нямата права за да създадете страница от тип <em>'{0}'</em>." - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Страници от този тип могат само да бъдат създавани като дъщерни на " -#~ "<em>'{0}'</em>. Новата страница ще бъде запазена тук." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "Страницата не беше създадена поради грешки." diff --git a/wagtail/wagtailadmin/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/ca/LC_MESSAGES/django.po index 6771d0d19..b24a5c00a 100644 --- a/wagtail/wagtailadmin/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/ca/LC_MESSAGES/django.po @@ -1,22 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# Lloople <d.lloople@gmail.com>, 2014 +# David Llop <d.lloople@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-14 21:58+0000\n" -"Last-Translator: Lloople <d.lloople@gmail.com>\n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" -"ca/)\n" -"Language: ca\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/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" #: edit_handlers.py:627 @@ -27,58 +26,100 @@ msgstr "" msgid "Common page configuration" msgstr "Configuració de la pàgina comú" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Termini de cerca" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Introdueix el teu nom d'usuari" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "Introdueix la contrassenya" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Escriu el teu correu per reiniciar la teva contrasenya" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Si us plau escriu el teu correu" -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Ho sentim, no pots reiniciar la teva contrasenya aquí ja que la teva conta " -"d'usuari es administrada per un altre servidor" +msgstr "Ho sentim, no pots reiniciar la teva contrasenya aquí ja que la teva conta d'usuari es administrada per un altre servidor" -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "No es reconeix aquesta adreça de correu" -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Publica" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Aquest llimac ja està en ús" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "No es reconeix aquesta adreça de correu" +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Tauler de control" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Menú" @@ -91,9 +132,7 @@ msgstr "Benvingut al Wagtail CMS del lloc %(site_name)s" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Aquest es el teu tauler de control on es mostrarà informació útil sobre el " -"contingut que has creat" +msgstr "Aquest es el teu tauler de control on es mostrarà informació útil sobre el contingut que has creat" #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -101,9 +140,7 @@ msgstr "Registra't" #: templates/wagtailadmin/login.html:18 msgid "Your username and password didn't match. Please try again." -msgstr "" -"El teu nom d'usuari i la teva contrasenya no coincideixen. Si us plau torna-" -"ho a intentar" +msgstr "El teu nom d'usuari i la teva contrasenya no coincideixen. Si us plau torna-ho a intentar" #: templates/wagtailadmin/login.html:26 msgid "Sign in to Wagtail" @@ -127,10 +164,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"La teva imatge de perfil és subministrada per Gravatar i està conectada al " -"teu correu. Amb una conta de Gravatar pots definir una imatge de perfil per " -"cadascuna de la resta d'adreces de correu que fas servir." +msgstr "La teva imatge de perfil és subministrada per Gravatar i està conectada al teu correu. Amb una conta de Gravatar pots definir una imatge de perfil per cadascuna de la resta d'adreces de correu que fas servir." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -157,9 +191,7 @@ msgstr "Canvia la contrasenya" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"La teva contrasenya no es pot canviar des d'aquí. Si us plau contacta amb " -"l'administrador de la web" +msgstr "La teva contrasenya no es pot canviar des d'aquí. Si us plau contacta amb l'administrador de la web" #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -233,12 +265,12 @@ msgstr "Enllaç de correu electrònic" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Cercar" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Explorador" @@ -252,12 +284,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Hi ha un resultat" -msgstr[1] "" -"\n" -"Hi han %(counter)s resultats" +msgstr[0] "\nHi ha un resultat" +msgstr[1] "\nHi han %(counter)s resultats" #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -302,7 +330,7 @@ msgstr "Baixa" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Esborra" @@ -414,12 +442,8 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -"<span>%(total_pages)s</span> Pàgina" -msgstr[1] "" -"\n" -"<span>%(total_pages)s</span>Pàgines" +msgstr[0] "\n<span>%(total_pages)s</span> Pàgina" +msgstr[1] "\n<span>%(total_pages)s</span>Pàgines" #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -431,12 +455,8 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -"<span>%(total_images)s</span> Imatge" -msgstr[1] "" -"\n" -"<span>%(total_images)s</span> Imatges" +msgstr[0] "\n<span>%(total_images)s</span> Imatge" +msgstr[1] "\n<span>%(total_images)s</span> Imatges" #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -448,12 +468,8 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -"<span>%(total_docs)s</span> Document" -msgstr[1] "" -"\n" -"<span>%(total_docs)s</span> Documents" +msgstr[0] "\n<span>%(total_docs)s</span> Document" +msgstr[1] "\n<span>%(total_docs)s</span> Documents" #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -512,9 +528,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Pots editar la pàgina aquí:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -524,12 +539,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " -msgstr "" -"\n" -"Previsualitzant '%(title)s, enviada per %(submitted_by)s el %(submitted_on)s." +msgstr "\nPrevisualitzant '%(title)s, enviada per %(submitted_by)s el %(submitted_on)s." #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -575,23 +587,16 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " -msgstr[0] "" -"\n" -"Això també esborrarà una subpàgina més." -msgstr[1] "" -"\n" -"Això també esborrarà %(descendant_count)s subpàgines més." +msgstr[0] "\nAixò també esborrarà una subpàgina més." +msgstr[1] "\nAixò també esborrarà %(descendant_count)s subpàgines més." #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Alternativament pots despublicar la pàgina. Això treu la pàgina de la vista " -"pública i podràs editar-la o tornar-la a publicar desprès." +msgstr "Alternativament pots despublicar la pàgina. Això treu la pàgina de la vista pública i podràs editar-la o tornar-la a publicar desprès." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -622,9 +627,7 @@ msgstr "Estàs segur que vols moure aquesta pàgina dins de '%(title)s'?" msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Estàs segur que vols moure aquesta pàgina i els seus fills dins de " -"'%(title)s'?" +msgstr "Estàs segur que vols moure aquesta pàgina i els seus fills dins de '%(title)s'?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -638,7 +641,7 @@ msgstr "Despublica %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Despublica" @@ -654,6 +657,20 @@ msgstr "Si, despublicar" msgid "Pages using" msgstr "Pàgines en ús" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -707,7 +724,7 @@ msgid "Exploring %(title)s" msgstr "Explorant %(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Afegeix una pàgina filla" @@ -728,52 +745,50 @@ msgstr "Activa l'ordenació de les pàgines fill" msgid "Drag" msgstr "Agafa" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Explora les subpàgines de '%(title)s'" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Explora" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Explora les pàgines filles de '%(title)s'" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Afegeix una pàgina filla a '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Afegeix subpàgina" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "No s'han creat pàgines." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "Per què no <a href=\"%(add_page_url)s\">afegeixes una</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -"Pàgina %(page_number)s de %(num_pages)s." -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -783,7 +798,7 @@ msgstr "" msgid "Previous" msgstr "Anterior" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -804,7 +819,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Selecciona una nova pàgina pare per <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -814,11 +829,7 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -"Hi ha un resultat" msgstr[1] "" -"\n" -"Hi han %(counter)s resultats" #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -843,9 +854,7 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -"Pàgina %(page_number)s de %(num_pages)s." +msgstr "\nPàgina %(page_number)s de %(num_pages)s." #: templates/wagtailadmin/pages/search_results.html:54 #, python-format @@ -857,9 +866,8 @@ msgid "Enter a search term above" msgstr "Introdueix un terme de cerca abaix" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Pàgines en ús" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -874,9 +882,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Cercar" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -939,9 +946,15 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Estat" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -957,9 +970,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Pàgina %(page_num)s de %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Usuaris" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -978,122 +990,69 @@ msgid "Your password has been changed successfully!" msgstr "S'ha canviat la teva contrasenya!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "S'ha canviat la teva contrasenya!" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Aquest llimac ja està en ús" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Pàgina '{0}' publicada." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Pàgina '{0}' enviada per revisió" -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Pàgina '{0}' creada." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "La pàgina no s'ha pogut guardar degut a errors de validació" +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Pàgina '{0}' actualitzada." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "La pàgina no s'ha pogut guardar degut a errors de validació" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "Aquesta pàgina està esperant moderació" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Pàgina '{0}' eliminada." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Pàgina '{0}' despublicada." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Pàgina '{0}' moguda." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "La pàgina '{0}' ja no es troba esperant moderació." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "La pàgina '{0}' ha estat rebutjada per publicació" - -#~ msgid "Please type a valid time" -#~ msgstr "Si us plau introdueixi una hora vàlida " - -#~ msgid "View draft" -#~ msgstr "Visualitza l'esborrany" - -#~ msgid "View live" -#~ msgstr "Visualitza en viu" - -#~ msgid "Status:" -#~ msgstr "Estat:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "On vols crear la teva pàgina %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "On vols crear això" - -#~ msgid "Create a new page" -#~ msgstr "Crea una nova pàgina" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "La teva pàgina nova serà desada al <em>nivell més alt</em> del teu web. " -#~ "Pots moure-la desprès de desar-la." - -#~ msgid "More" -#~ msgstr "Més" - -#~ msgid "Redirects" -#~ msgstr "Redireccionaments" - -#~ msgid "Editors Picks" -#~ msgstr "Selecció dels editors" - -#~ msgid "Snippets" -#~ msgstr "Retalls" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "" -#~ "Ho sentim, no tens permisos per crear una pàgina del tipus <em>'{0}'</em>" - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Pàgines d'aquest tipus només poden ser creades com a filles de <em>'{0}'</" -#~ "em>. La nova pàgina es guardarà allà" - -#~ msgid "The page could not be created due to errors." -#~ msgstr "La pàgina no es pot crear degut a errors." diff --git a/wagtail/wagtailadmin/locale/de/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/de/LC_MESSAGES/django.po index 531249833..589af7b7f 100644 --- a/wagtail/wagtailadmin/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/de/LC_MESSAGES/django.po @@ -1,24 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# jspielmann <j@spielmannsolutions.com>, 2014 +# Johannes Spielmann <j@spielmannsolutions.com>, 2014 # karlsander <karlsander@gmail.com>, 2014 # pcraston <patrick@craston.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-24 19:00+0000\n" -"Last-Translator: pcraston <patrick@craston.com>\n" -"Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" -"de/)\n" -"Language: de\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: German (http://www.transifex.com/projects/p/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" #: edit_handlers.py:627 @@ -29,58 +28,100 @@ msgstr "" msgid "Common page configuration" msgstr "Allgemeine Seiten Konfiguration" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Suchbegriff" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Bitte geben Sie Ihren Benutzernamen ein" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "Bitte geben Sie Ihr Passwort ein" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Geben Sie ihre Email Adresse ein um ihr Passwort zurückzusetzen." -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Bitte geben Sie ihre Email Adresse ein." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Sie können Ihr Passwort hier leider nicht zurücksetzen, da Ihr Benutzerkonto " -"von einem anderen Server verwaltet wird." +msgstr "Sie können Ihr Passwort hier leider nicht zurücksetzen, da Ihr Benutzerkonto von einem anderen Server verwaltet wird." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Die Email-Adresse wurde nicht erkannt." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Veröffentlichen" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Der Kurztitel wird bereits verwendet" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "Die Email-Adresse wurde nicht erkannt." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Dashboard" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Menü" @@ -93,9 +134,7 @@ msgstr "Willkommen zum %(site_name)s Wagtail CMS" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Das ist Ihr Dashboard, auf dem nützliche Informationen zu den Inhalten, die " -"Sie erstellen, zusammengestellt werden." +msgstr "Das ist Ihr Dashboard, auf dem nützliche Informationen zu den Inhalten, die Sie erstellen, zusammengestellt werden." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -103,9 +142,7 @@ msgstr "Anmelden" #: templates/wagtailadmin/login.html:18 msgid "Your username and password didn't match. Please try again." -msgstr "" -"Ihr Benutzername und Ihr Passwort wurden nicht erkannt. Bitte versuchen Sie " -"es erneut." +msgstr "Ihr Benutzername und Ihr Passwort wurden nicht erkannt. Bitte versuchen Sie es erneut." #: templates/wagtailadmin/login.html:26 msgid "Sign in to Wagtail" @@ -129,10 +166,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Ihr Profilbild wird von Gravatar zur Verfügung gestellt und ist mit Ihrer " -"Email Adresse verknüpft. Mit einem Gravatar Benutzerkonto können Sie die " -"Profilbilder für all Ihre Email Adressen verwalten." +msgstr "Ihr Profilbild wird von Gravatar zur Verfügung gestellt und ist mit Ihrer Email Adresse verknüpft. Mit einem Gravatar Benutzerkonto können Sie die Profilbilder für all Ihre Email Adressen verwalten." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -159,9 +193,7 @@ msgstr "Password ändern" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"Sie können Ihr Passwort hier nicht ändern. Bitte kontaktieren Sie einen " -"Administrator der Seite." +msgstr "Sie können Ihr Passwort hier nicht ändern. Bitte kontaktieren Sie einen Administrator der Seite." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -203,8 +235,7 @@ msgstr "Überprüfen Sie ihre Emails." #: templates/wagtailadmin/account/password_reset/done.html:16 msgid "A link to reset your password has been emailed to you." -msgstr "" -"Ein Link zum Zurücksetzen Ihres Passwortes wurde Ihnen per Email zugesandt." +msgstr "Ein Link zum Zurücksetzen Ihres Passwortes wurde Ihnen per Email zugesandt." #: templates/wagtailadmin/account/password_reset/email.txt:2 msgid "Please follow the link below to reset your password" @@ -236,12 +267,12 @@ msgstr "Email-Link" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Suche" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Explorer" @@ -255,12 +286,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Es gibt ein Ergebnis." -msgstr[1] "" -"\n" -"Es gibt %(counter)s Ergebnisse." +msgstr[0] "\nEs gibt ein Ergebnis." +msgstr[1] "\nEs gibt %(counter)s Ergebnisse." #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -305,7 +332,7 @@ msgstr "Nach unten" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Löschen" @@ -417,12 +444,8 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -"<span>%(total_pages)s</span> Seite" -msgstr[1] "" -"\n" -"<span>%(total_pages)s</span> Seiten" +msgstr[0] "\n<span>%(total_pages)s</span> Seite" +msgstr[1] "\n<span>%(total_pages)s</span> Seiten" #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -434,12 +457,8 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -"<span>%(total_images)s</span> Bild" -msgstr[1] "" -"\n" -"<span>%(total_images)s</span> Bilder" +msgstr[0] "\n<span>%(total_images)s</span> Bild" +msgstr[1] "\n<span>%(total_images)s</span> Bilder" #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -451,12 +470,8 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -"<span>%(total_docs)s</span> Dokument" -msgstr[1] "" -"\n" -"<span>%(total_docs)s</span> Dokumente" +msgstr[0] "\n<span>%(total_docs)s</span> Dokument" +msgstr[1] "\n<span>%(total_docs)s</span> Dokumente" #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -515,9 +530,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Sie können die Seite hier bearbeiten:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -527,13 +541,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " -msgstr "" -"\n" -"Vorschau für '%(title)s', eingereicht von %(submitted_by)s am " -"%(submitted_on)s." +msgstr "\nVorschau für '%(title)s', eingereicht von %(submitted_by)s am %(submitted_on)s." #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -579,24 +589,16 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " -msgstr[0] "" -"\n" -"Eine weitere Unterseite wird auch gelöscht." -msgstr[1] "" -"\n" -"%(descendant_count)s Unterseiten werden auch gelöscht." +msgstr[0] "\nEine weitere Unterseite wird auch gelöscht." +msgstr[1] "\n%(descendant_count)s Unterseiten werden auch gelöscht." #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Alternativ können Sie die Seite depublizieren. Die Seite wird aus der " -"öffentlichen Ansicht entfernt und Sie können sie später noch bearbeiten oder " -"erneut veröffentlichen." +msgstr "Alternativ können Sie die Seite depublizieren. Die Seite wird aus der öffentlichen Ansicht entfernt und Sie können sie später noch bearbeiten oder erneut veröffentlichen." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -620,17 +622,14 @@ msgstr "Verschieben" #: templates/wagtailadmin/pages/confirm_move.html:11 #, python-format msgid "Are you sure you want to move this page into '%(title)s'?" -msgstr "" -"Sind Sie sicher, dass Sie diese Seite nach '%(title)s' verschieben wollen?" +msgstr "Sind Sie sicher, dass Sie diese Seite nach '%(title)s' verschieben wollen?" #: templates/wagtailadmin/pages/confirm_move.html:13 #, python-format msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Sind Sie sicher, dass Sie diese Seite und alle untergeordneten Seiten nach " -"'%(title)s' verschieben wollen?" +msgstr "Sind Sie sicher, dass Sie diese Seite und alle untergeordneten Seiten nach '%(title)s' verschieben wollen?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -644,7 +643,7 @@ msgstr "%(title)s depublizieren" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Depublizieren" @@ -660,6 +659,20 @@ msgstr "Ja, depublizieren" msgid "Pages using" msgstr "Benutzende Seiten" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -713,7 +726,7 @@ msgid "Exploring %(title)s" msgstr "%(title)s durchstöbern" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Untergeordnete Seite hinzufügen" @@ -734,52 +747,50 @@ msgstr "Sortierung von untergeordneten Seiten aktivieren" msgid "Drag" msgstr "Ziehen" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Explorer Teilseiten von '%(title)s'" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Durchstöbern" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Explorer untergeordnete Seiten von '%(title)s'" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Untergeordnete Seite zu '%(title)s' hinzufügen" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Untergeordnete Seite hinzufügen" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "Es wurden keine Seiten erstellt." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "<a href=\"%(add_page_url)s\">Fügen Sie doch eine hinzu!</a>" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -"Seite %(page_number)s von %(num_pages)s." -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -789,7 +800,7 @@ msgstr "" msgid "Previous" msgstr "Vorherige" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -810,7 +821,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Wählen Sie eine neue übergeordnete Seite für <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -820,11 +831,7 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -"Es gibt ein Ergebnis" msgstr[1] "" -"\n" -"Es gibt %(counter)s Ergebnisse" #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -849,24 +856,20 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -"Seite %(page_number)s von %(num_pages)s." +msgstr "\nSeite %(page_number)s von %(num_pages)s." #: templates/wagtailadmin/pages/search_results.html:54 #, python-format msgid "Sorry, no pages match <em>\"%(query_string)s\"</em>" -msgstr "" -"Es gibt leider keine Seiten zum Suchbegriff <em>\"%(query_string)s\"</em>" +msgstr "Es gibt leider keine Seiten zum Suchbegriff <em>\"%(query_string)s\"</em>" #: templates/wagtailadmin/pages/search_results.html:56 msgid "Enter a search term above" msgstr "Geben Sie oben einen Suchbegriff ein" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Benutzende Seiten" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -881,9 +884,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Suche" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -946,9 +948,15 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Status" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -964,9 +972,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Seite %(page_num)s von %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Benutzer" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -985,127 +992,69 @@ msgid "Your password has been changed successfully!" msgstr "Ihr Passwort wurde erfolgreich geändert." #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "Ihr Passwort wurde erfolgreich geändert." +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Der Kurztitel wird bereits verwendet" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Seite '{0}' veröffentlicht." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Seite '{0}' zur Freischaltung eingereicht." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Seite '{0}' erstellt." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" msgstr "" -"Aufgrund von Fehlern bei der Validierung konnte die Seite nicht gespeichert " -"werden." -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Seite '{0}' geändert." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" -msgstr "" -"Aufgrund von Fehlern bei der Validierung konnte die Seite nicht gespeichert " -"werden." +msgstr "Aufgrund von Fehlern bei der Validierung konnte die Seite nicht gespeichert werden." -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "Diese Seite wartet derzeit auf Freischaltung" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Seite '{0}' gelöscht." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Seite '{0}' depubliziert." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Seite '{0}' verschoben." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "Die Seite '{0}' wartet derzeit nicht auf Freischaltung." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Die Veröffentlichung der Seite '{0}' wurde abgelehnt." - -#~ msgid "Please type a valid time" -#~ msgstr "Geben Sie bitte eine gültige Zeit ein!" - -#~ msgid "View draft" -#~ msgstr "Entwurf anzeigen" - -#~ msgid "View live" -#~ msgstr "Live anzeigen" - -#~ msgid "Status:" -#~ msgstr "Status:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "Wo wollen Sie %(page_type)s erstellen?" - -#~ msgid "Where do you want to create this" -#~ msgstr "Wo wollen Sie dies erstellen" - -#~ msgid "Create a new page" -#~ msgstr "Neue Seite erstellen" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "Ihre neue Seite wird auf der <em>obersten Ebene</em> Ihrer Website " -#~ "erstellt. Nach dem Speichern können Sie diese verschieben." - -#~ msgid "More" -#~ msgstr "Mehr" - -#~ msgid "Redirects" -#~ msgstr "Weiterleitungen" - -#~ msgid "Editors Picks" -#~ msgstr "Redaktionsempfehlungen" - -#~ msgid "Snippets" -#~ msgstr "Snippets" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "" -#~ "Leider haben Sie nicht die Berechtigung eine Seite vom Typ <em>'{0}'</em> " -#~ "zu erstellen." - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Seiten dieses Typs können nur als untergeordnete Seiten von <em>'{0}'</" -#~ "em> erstellt werden. Die neue Seite wird dort gespeichert." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "Aufgrund von Fehlern konnte die Seite nicht erstellt werden." diff --git a/wagtail/wagtailadmin/locale/el/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/el/LC_MESSAGES/django.po index 926012f39..1ab108d02 100644 --- a/wagtail/wagtailadmin/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/el/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # serafeim <serafeim@torchbox.com>, 2014 # serafeim <serafeim@torchbox.com>, 2014 @@ -9,15 +9,14 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-14 21:14+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" -"el/)\n" -"Language: el\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Greek (http://www.transifex.com/projects/p/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" #: edit_handlers.py:627 @@ -28,58 +27,100 @@ msgstr "" msgid "Common page configuration" msgstr "Κοινές ρυθμίσεις σελίδων" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Όρος αναζήτησης" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Εισάγετε το όνομα σας" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "Εισάγετε τον κωδικό σας" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Εισάγετε τη διεύθυνση email σας για να ανανεώσετε τον κωδικό σας" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Συμπληρώσατε τη διεύθυνση email σας." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Λυπούμαστε, δε μπορείτε να αλλάξετε τον κωδικό σας διότι το λογαριασμό " -"χρήστη σας τον διαχειρίζεται ένας διαφορετικός εξυπηρετητής." +msgstr "Λυπούμαστε, δε μπορείτε να αλλάξετε τον κωδικό σας διότι το λογαριασμό χρήστη σας τον διαχειρίζεται ένας διαφορετικός εξυπηρετητής." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Δε βρέθηκε το email." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Έκδοση" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Το slug χρησιμοποιείται" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "Δε βρέθηκε το email." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Πίνακας ελέγχου" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Μενού" @@ -92,9 +133,7 @@ msgstr "Καλώς ήρθατε στο %(site_name)s Wagtail CMS" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Αυτός είναι ο πίνακας ελέγχου στον οποίο εμφανίζονται πληροφορίες σχετικές " -"με το περιεχόμενου που έχετε δημιουργήσει." +msgstr "Αυτός είναι ο πίνακας ελέγχου στον οποίο εμφανίζονται πληροφορίες σχετικές με το περιεχόμενου που έχετε δημιουργήσει." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -126,10 +165,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Η εικόνα σας παρέχετε από το Gravatar και συσχετίζεται με τη διεύθυνση email " -"σας. Με το λογαριασμό σας στο Gravatar μπορείτε να δημιουργήσετε εικόνα και " -"για τις άλλες διευθύνσεις email που έχετε." +msgstr "Η εικόνα σας παρέχετε από το Gravatar και συσχετίζεται με τη διεύθυνση email σας. Με το λογαριασμό σας στο Gravatar μπορείτε να δημιουργήσετε εικόνα και για τις άλλες διευθύνσεις email που έχετε." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -156,8 +192,7 @@ msgstr "Αλλαγή κωδικού" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"Ο κωδικός σας δε μπορεί να αλλαχτεί εδώ. Παρακαλώ ενημερώστε το διαχειριστή." +msgstr "Ο κωδικός σας δε μπορεί να αλλαχτεί εδώ. Παρακαλώ ενημερώστε το διαχειριστή." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -203,8 +238,7 @@ msgstr "Μια σύνδεση για ανανέωση του κωδικού σα #: templates/wagtailadmin/account/password_reset/email.txt:2 msgid "Please follow the link below to reset your password" -msgstr "" -"Παρακαλούμε ακολουθήστε τη σύνδεση παρακάτω για να ανανεώσετε τον κωδικό σας" +msgstr "Παρακαλούμε ακολουθήστε τη σύνδεση παρακάτω για να ανανεώσετε τον κωδικό σας" #: templates/wagtailadmin/account/password_reset/email_subject.txt:2 msgid "Password reset" @@ -232,12 +266,12 @@ msgstr "Σύνδεση με email" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Αναζήτηση" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Εξερευνητής" @@ -251,12 +285,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Βρέθηκε ένα αποτέλεσμα" -msgstr[1] "" -"\n" -"Βρέθηκαν %(counter)s αποτελέσματα" +msgstr[0] "\nΒρέθηκε ένα αποτέλεσμα" +msgstr[1] "\nΒρέθηκαν %(counter)s αποτελέσματα" #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -301,7 +331,7 @@ msgstr "Μετακίνηση κάτω" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Διαγραφή" @@ -413,12 +443,8 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -"<span>%(total_pages)s</span> Σελίδα" -msgstr[1] "" -"\n" -"<span>%(total_pages)s</span> Σελίδες" +msgstr[0] "\n<span>%(total_pages)s</span> Σελίδα" +msgstr[1] "\n<span>%(total_pages)s</span> Σελίδες" #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -430,12 +456,8 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -"<span>%(total_images)s</span> Εικόνα" -msgstr[1] "" -"\n" -"<span>%(total_images)s</span> Εικόνες" +msgstr[0] "\n<span>%(total_images)s</span> Εικόνα" +msgstr[1] "\n<span>%(total_images)s</span> Εικόνες" #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -447,14 +469,8 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -"\n" -"<span>%(total_docs)s</span> Έγγραφο" -msgstr[1] "" -"\n" -"\n" -"<span>%(total_docs)s</span> Έγγραφα" +msgstr[0] "\n\n<span>%(total_docs)s</span> Έγγραφο" +msgstr[1] "\n\n<span>%(total_docs)s</span> Έγγραφα" #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -513,9 +529,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Μπορείτε να διορθώστε τη σελίδα εδώ:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -525,14 +540,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" -" " -msgstr "" -"\n" -" Προεπισκόπηση της '%(title)s', που δημιουργήθηκε από τον " -"%(submitted_by)s στις %(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " +msgstr "\n Προεπισκόπηση της '%(title)s', που δημιουργήθηκε από τον %(submitted_by)s στις %(submitted_on)s.\n " #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -578,26 +588,16 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" -" " -msgstr[0] "" -"\n" -" Επίσης θα διαγραφεί και μια ακόμα σελίδα.\n" -" " -msgstr[1] "" -"\n" -" Επίσης θα διαγραφούν και %(descendant_count)s ακόμα " -"σελίδες.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " +msgstr[0] "\n Επίσης θα διαγραφεί και μια ακόμα σελίδα.\n " +msgstr[1] "\n Επίσης θα διαγραφούν και %(descendant_count)s ακόμα σελίδες.\n " #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Εναλλακτικά μπορείτε να αποεκδόσετε τη σελίδα ώστε να μην εμφανίζεται στο " -"κοινό. Στη συνέχεια μπορείτε να τη διορθώστε και να την εκδόσετε ." +msgstr "Εναλλακτικά μπορείτε να αποεκδόσετε τη σελίδα ώστε να μην εμφανίζεται στο κοινό. Στη συνέχεια μπορείτε να τη διορθώστε και να την εκδόσετε ." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -628,9 +628,7 @@ msgstr "Είστε σίγουρος ότι θέλετε να μετακινήσ msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Είστε σίγουρος ότι θέλετε να μετακινήσετε τη σελίδα και όλα τα παιδιά της " -"στο '%(title)s';" +msgstr "Είστε σίγουρος ότι θέλετε να μετακινήσετε τη σελίδα και όλα τα παιδιά της στο '%(title)s';" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -644,7 +642,7 @@ msgstr "Απόεκδοστε τη σελίδα %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Αποέκδοση" @@ -660,6 +658,20 @@ msgstr "Ναι, να αποεκδοθεί" msgid "Pages using" msgstr "Οι σελίδες που το χρησιμοποιούν" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -713,7 +725,7 @@ msgid "Exploring %(title)s" msgstr "Εξερεύνηση %(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Προσθήκη σελίδας-παιδί" @@ -734,52 +746,50 @@ msgstr "Ενεργοποίηση ταξινόμησης σελίδων - παι msgid "Drag" msgstr "Τραβήξτε" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Εξερεύνηση υποσελίδων του '%(title)s'" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Εξερεύνηση" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Εξερεύνηση σελίδων - παιδιά της '%(title)s'" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Προσθήκη σελίδας - παιδί στην '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Προσθήκη υποσελίδας" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "Δεν έχουν δημιουργηθεί σελίδες." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "Θέλετε να <a href=\"%(add_page_url)s\">προσθέσετε μία</a>;" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -"Σελίδα %(page_number)s of %(num_pages)s." -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -789,7 +799,7 @@ msgstr "" msgid "Previous" msgstr "Προηγούμενο" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -810,7 +820,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Επιλογή νέας πατρικής σελίδας για την <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -820,11 +830,7 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -"Βρέθηκε ένα αποτέλεσμα" msgstr[1] "" -"\n" -"Βρέθηκαν %(counter)s αποτελέσματα" #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -849,24 +855,20 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -"Σελίδα %(page_number)s of %(num_pages)s." +msgstr "\nΣελίδα %(page_number)s of %(num_pages)s." #: templates/wagtailadmin/pages/search_results.html:54 #, python-format msgid "Sorry, no pages match <em>\"%(query_string)s\"</em>" -msgstr "" -"Λυπούμαστε, καμία σελίδα δε ταιριάζει με το <em>\"%(query_string)s\"</em>" +msgstr "Λυπούμαστε, καμία σελίδα δε ταιριάζει με το <em>\"%(query_string)s\"</em>" #: templates/wagtailadmin/pages/search_results.html:56 msgid "Enter a search term above" msgstr "Εισάγετε όρο αναζήτησης" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Οι σελίδες που το χρησιμοποιούν" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -881,9 +883,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Αναζήτηση" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -946,9 +947,15 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Κατάσταση" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -964,9 +971,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Σελίδα %(page_num)s από %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Χρήστες" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -985,121 +991,69 @@ msgid "Your password has been changed successfully!" msgstr "Ο κωδικός σας αλλάχτηκε με επιτυχία!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "Ο κωδικός σας αλλάχτηκε με επιτυχία!" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Το slug χρησιμοποιείται" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Η σελίδα '{0}' δημοσιεύθηκε." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Η σελίδα '{0}' στάλθηκε προς έλεγχο." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Η σελίδα '{0}' δημιουργήθηκε." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "Δε ήταν δυνατή η αποθήκευση της σελίδας λόγω σφαλμάτων ελέγχου" +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Έγινε η αποθήκευση της σελίδας '{0}'." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "Δε ήταν δυνατή η αποθήκευση της σελίδας λόγω σφαλμάτων ελέγχου" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "Η σελίδα δεν είναι προς έλεγχο" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Έγινε διαγραφή της σελίδας '{0}'." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Έγινε αποδημοσίευση της '{0}'." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Έγινε η μετακίνηση της σελίδας '{0}'." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "Η σελίδα '{0}' δεν είναι για έλεγχο." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Η δημοσίευση της σελίδας '{0}' απορρίφθηκε." - -#~ msgid "Please type a valid time" -#~ msgstr "Συμπληρώσατε ώρα" - -#~ msgid "View draft" -#~ msgstr "Εμφάνιση προσχεδίου" - -#~ msgid "View live" -#~ msgstr "Εμφάνιση στο site" - -#~ msgid "Status:" -#~ msgstr "Κατάσταση:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "Πού θέλετε να δημιουργήσετε τη σελίδα %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "Πού θέλετε να δημιουργήσετε τη σελίδα" - -#~ msgid "Create a new page" -#~ msgstr "Δημιουργία νέας σελίδας" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "Η νέα σας σελίδα θα αποθηκευθεί στο <em>κορυφαίο επίπεδο</em> του website " -#~ "σας. Μπορείτε να τη μετακινήσετε μετά την αποθήκευση." - -#~ msgid "More" -#~ msgstr "Περισσότερα" - -#~ msgid "Redirects" -#~ msgstr "Ανακατεθύνσεις" - -#~ msgid "Editors Picks" -#~ msgstr "Επιλογές συντακτών" - -#~ msgid "Snippets" -#~ msgstr "Snippets" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "Λυπούμαστε, δεν έχετε πρόσβαση σε σελίδες τύπου <em>'{0}'</em>" - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Σελίδες του συγκεκριμένου τύπου μπορούν να δημιουργηθούν μόνο σαν παιδιά " -#~ "του <em>'{0}'</em>. Οπότε η νέα σελίδα θα αποθηκευθεί εκεί." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "Δεν ήταν δυνατή η αποθήκευση της σελίδας." diff --git a/wagtail/wagtailadmin/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/en/LC_MESSAGES/django.po index 40d56ccc2..999e25a1a 100644 --- a/wagtail/wagtailadmin/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+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" @@ -25,46 +25,92 @@ msgstr "" msgid "Common page configuration" msgstr "" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "" -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." msgstr "" -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "" -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: forms.py:88 +msgid "New title" +msgstr "" + +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 #: templates/wagtailadmin/pages/_privacy_indicator.html:18 msgid "Public" msgstr "" -#: forms.py:83 +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 +#: forms.py:139 msgid "This field is required." msgstr "" @@ -72,7 +118,7 @@ msgstr "" msgid "Dashboard" msgstr "" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "" @@ -218,12 +264,12 @@ msgstr "" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "" @@ -283,7 +329,7 @@ msgstr "" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "" @@ -596,7 +642,7 @@ msgstr "" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "" @@ -612,6 +658,20 @@ msgstr "" msgid "Pages using" msgstr "" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -665,7 +725,7 @@ msgid "Exploring %(title)s" msgstr "" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "" @@ -686,42 +746,42 @@ msgstr "" msgid "Drag" msgstr "" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" +msgid "Explore child pages of '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "" -#: templates/wagtailadmin/pages/list.html:260 +#: templates/wagtailadmin/pages/list.html:263 #, python-format msgid "" "\n" @@ -729,7 +789,7 @@ msgid "" " " msgstr "" -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -739,7 +799,7 @@ msgstr "" msgid "Previous" msgstr "" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -890,6 +950,13 @@ msgstr "" msgid "Sat" msgstr "" +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" + #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" msgstr "" @@ -927,62 +994,66 @@ msgstr "" msgid "Your preferences have been updated successfully!" msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "" -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "" -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "" -#: views/pages.py:224 +#: views/pages.py:233 msgid "The page could not be created due to validation errors" msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "" -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "" -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "" -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "" -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "" -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "" diff --git a/wagtail/wagtailadmin/locale/es/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/es/LC_MESSAGES/django.po index 4507d528f..36aa5f402 100644 --- a/wagtail/wagtailadmin/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/es/LC_MESSAGES/django.po @@ -1,23 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 -# unaizalakain <unai@gisa-elkartea.org>, 2014 +# Unai Zalakain <unai@gisa-elkartea.org>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-23 10:24+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" -"es/)\n" -"Language: es\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/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=2; plural=(n != 1);\n" #: edit_handlers.py:627 @@ -28,58 +27,100 @@ msgstr "" msgid "Common page configuration" msgstr "Configuración común de página" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Término de búsqueda" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Introduce tu nombre de usuario" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "Introduce contraseña" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Escribe tu dirección de correo para restablecer tu contraseña" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Rellena tu dirección de correo por favor." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Lo sentimos, no puedes restablecer tu contraseña aquí porque tu cuenta es " -"gestionada por otro servidor." +msgstr "Lo sentimos, no puedes restablecer tu contraseña aquí porque tu cuenta es gestionada por otro servidor." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "No se reconoce la dirección de correo." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Publicar" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Este slug ya está en uso" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "No se reconoce la dirección de correo." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Panel de control" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Menú" @@ -92,9 +133,7 @@ msgstr "Bienvenido al CMS Wagtail %(site_name)s" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Este es tu panel de control donde aparecerá información útil sobre el " -"contenido que has creado." +msgstr "Este es tu panel de control donde aparecerá información útil sobre el contenido que has creado." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -126,10 +165,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Tu avatar es provisto por Gravatar y está conectado a tu dirección de " -"correo. Con una cuenta Gravatar puedes establecer un avatar para cualquier " -"número de correos electrónicos." +msgstr "Tu avatar es provisto por Gravatar y está conectado a tu dirección de correo. Con una cuenta Gravatar puedes establecer un avatar para cualquier número de correos electrónicos." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -156,9 +192,7 @@ msgstr "Cambiar Contraseña" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"Tu contraseña no puede cambiarse aquí. Por favor, contacta con el " -"administrador." +msgstr "Tu contraseña no puede cambiarse aquí. Por favor, contacta con el administrador." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -200,9 +234,7 @@ msgstr "Revisa tu correo electrónico" #: templates/wagtailadmin/account/password_reset/done.html:16 msgid "A link to reset your password has been emailed to you." -msgstr "" -"Un enlace para restablecer tu contraseña, te ha sido enviado por correo " -"electrónico." +msgstr "Un enlace para restablecer tu contraseña, te ha sido enviado por correo electrónico." #: templates/wagtailadmin/account/password_reset/email.txt:2 msgid "Please follow the link below to reset your password" @@ -234,12 +266,12 @@ msgstr "Enlace de correo electrónico" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Búsqueda" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Explorador" @@ -253,14 +285,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Hay una coincidencia\n" -" " -msgstr[1] "" -"\n" -" Hay %(counter)s coincidencias\n" -" " +msgstr[0] "\n Hay una coincidencia\n " +msgstr[1] "\n Hay %(counter)s coincidencias\n " #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -305,7 +331,7 @@ msgstr "Bajar" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Eliminar" @@ -417,14 +443,8 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -" <span>%(total_pages)s</span> Página\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_pages)s</span> Páginas\n" -" " +msgstr[0] "\n <span>%(total_pages)s</span> Página\n " +msgstr[1] "\n <span>%(total_pages)s</span> Páginas\n " #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -436,14 +456,8 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -" <span>%(total_images)s</span> Imagen\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_images)s</span> Imágenes\n" -" " +msgstr[0] "\n <span>%(total_images)s</span> Imagen\n " +msgstr[1] "\n <span>%(total_images)s</span> Imágenes\n " #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -455,14 +469,8 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -" <span>%(total_docs)s</span> Documento\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_docs)s</span> Documentos\n" -" " +msgstr[0] "\n <span>%(total_docs)s</span> Documento\n " +msgstr[1] "\n <span>%(total_docs)s</span> Documentos\n " #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -521,9 +529,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Puedes editar la página aquí:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -533,14 +540,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" -" " -msgstr "" -"\n" -" Previsualizando '%(title)s', enviada por %(submitted_by)s en " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " +msgstr "\n Previsualizando '%(title)s', enviada por %(submitted_by)s en %(submitted_on)s.\n " #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -586,26 +588,16 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" -" " -msgstr[0] "" -"\n" -" Esto también borrará otra subpágina.\n" -" " -msgstr[1] "" -"\n" -" Esto también eliminará %(descendant_count)s subpáginas " -"más.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " +msgstr[0] "\n Esto también borrará otra subpágina.\n " +msgstr[1] "\n Esto también eliminará %(descendant_count)s subpáginas más.\n " #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Otra opción es no publicar la página. Esto no permite que el público la vea " -"y la puedes editar o volver a publicar más tarde." +msgstr "Otra opción es no publicar la página. Esto no permite que el público la vea y la puedes editar o volver a publicar más tarde." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -636,9 +628,7 @@ msgstr "Estás seguro de que quieres mover esta página a dentro de '%(title)s'? msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Estás seguro de que quieres mover esta página y todas sus páginas hijas a " -"'%(title)s'?" +msgstr "Estás seguro de que quieres mover esta página y todas sus páginas hijas a '%(title)s'?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -652,7 +642,7 @@ msgstr "No publicar %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "No publicar" @@ -668,6 +658,20 @@ msgstr "Sí, no publicar" msgid "Pages using" msgstr "Páginas usando" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -721,7 +725,7 @@ msgid "Exploring %(title)s" msgstr "Explorando %(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Añadir página hija" @@ -742,53 +746,50 @@ msgstr "Habilitar organización de páginas hijas" msgid "Drag" msgstr "Llevar" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Explorar subpáginas de '%(title)s'" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Explorar" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Explorar páginas hijas de '%(title)s'" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Añadir página hija a '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Añadir subpágina" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "No ha sido creada ninguna página." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "Por qué no <a href=\"%(add_page_url)s\">añadir una</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -" Página %(page_number)s de %(num_pages)s.\n" -" " -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -798,7 +799,7 @@ msgstr "" msgid "Previous" msgstr "Anterior" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -819,7 +820,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Selecciona una nueva página padre para <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -829,13 +830,7 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -" Hay una coincidencia\n" -" " msgstr[1] "" -"\n" -" Hay %(counter)s coincidencias\n" -" " #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -860,10 +855,7 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -" Página %(page_number)s de %(num_pages)s.\n" -" " +msgstr "\n Página %(page_number)s de %(num_pages)s.\n " #: templates/wagtailadmin/pages/search_results.html:54 #, python-format @@ -875,9 +867,8 @@ msgid "Enter a search term above" msgstr "Introduce el término de búsqueda arriba" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Páginas usando" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -892,9 +883,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Búsqueda" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -957,9 +947,15 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Estado" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -975,9 +971,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Página %(page_num)s de %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Usuarios" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -996,123 +991,69 @@ msgid "Your password has been changed successfully!" msgstr "¡Tu contraseña ha sido cambiada con éxito!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "¡Tu contraseña ha sido cambiada con éxito!" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Este slug ya está en uso" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Página '{0}' publicada." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Página '{0}' enviada para ser moderada." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Página '{0}' creada." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "La página no ha podido ser guardada debido a errores de validación" +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Página '{0}' actualizada." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "La página no ha podido ser guardada debido a errores de validación" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "La página está a la espera de ser moderada" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Página '{0}' eliminada." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Página '{0}' no publicada." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Página '{0}' movida." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "La página '{0}' no está esperando a ser moderada." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Rechazada la publicación de la página '{0}'." - -#~ msgid "Please type a valid time" -#~ msgstr "Por favor, escribe una hora válida" - -#~ msgid "View draft" -#~ msgstr "Ver borrador" - -#~ msgid "View live" -#~ msgstr "Ver en vivo" - -#~ msgid "Status:" -#~ msgstr "Estado:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "Dónde quieres crear una %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "Dónde quieres crear esto" - -#~ msgid "Create a new page" -#~ msgstr "Crear una nueva página" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "Tu nueva página sera guardada en el <em>nivel superior</em> de tu sitio " -#~ "web. Puedes moverla después de guardar." - -#~ msgid "More" -#~ msgstr "Más" - -#~ msgid "Redirects" -#~ msgstr "Redirecciones" - -#~ msgid "Editors Picks" -#~ msgstr "Selecciones del Editor" - -#~ msgid "Snippets" -#~ msgstr "Fragmentos" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "" -#~ "Lo sentimos, no tienes permiso para crear una página de tipo <em>'{0}'</" -#~ "em>." - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Páginas de este tipo solo pueden ser creadas como hijas de <em>'{0}'</" -#~ "em>. Esta nueva página será guardada ahí." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "La página no ha podido ser creada debido a errores." diff --git a/wagtail/wagtailadmin/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/eu/LC_MESSAGES/django.po index 0210c6b96..85ab69320 100644 --- a/wagtail/wagtailadmin/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/eu/LC_MESSAGES/django.po @@ -1,22 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# unaizalakain <unai@gisa-elkartea.org>, 2014 +# Unai Zalakain <unai@gisa-elkartea.org>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" -"eu/)\n" -"Language: eu\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Basque (http://www.transifex.com/projects/p/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" #: edit_handlers.py:627 @@ -27,57 +26,100 @@ msgstr "" msgid "Common page configuration" msgstr "" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Bilaketa terminoa" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Idatzi zure eposta helbidea zure pasahitza berrezartzeko" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Idatzi zure eposta helbidea mesedez." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Sentitzen dugu, ezin duzu zure pasahitza hemen berrezarri zure kontua beste " -"zerbitzari batek kudeatzen duelako." +msgstr "Sentitzen dugu, ezin duzu zure pasahitza hemen berrezarri zure kontua beste zerbitzari batek kudeatzen duelako." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Ez da horrelako eposta helbiderik ezagutzen." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: forms.py:88 +msgid "New title" +msgstr "" + +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 #: templates/wagtailadmin/pages/_privacy_indicator.html:18 msgid "Public" msgstr "" -#: forms.py:83 +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "Ez da horrelako eposta helbiderik ezagutzen." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Kontrol panela" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "" @@ -90,9 +132,7 @@ msgstr "Ongi etorri %(site_name)s Wagtail CMSra" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Kontrol panel honetan sortu duzun edukiekin erlazionaturiko informazio " -"baliagarria agertuko da." +msgstr "Kontrol panel honetan sortu duzun edukiekin erlazionaturiko informazio baliagarria agertuko da." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -100,9 +140,7 @@ msgstr "" #: templates/wagtailadmin/login.html:18 msgid "Your username and password didn't match. Please try again." -msgstr "" -"Zure erabiltzaileak eta pasahitzak ez dute bat egin. Mesedez saiatu " -"beranduago." +msgstr "Zure erabiltzaileak eta pasahitzak ez dute bat egin. Mesedez saiatu beranduago." #: templates/wagtailadmin/login.html:26 msgid "Sign in to Wagtail" @@ -126,10 +164,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Zure avatar irudia Gravatar-ek hornitzen du eta zure eposta helbidera " -"konektatua dago. Gravatar kontu batekin erabiltzen duzun eposta helbide " -"bakoitzeko avatar bat ezarri dezakezu." +msgstr "Zure avatar irudia Gravatar-ek hornitzen du eta zure eposta helbidera konektatua dago. Gravatar kontu batekin erabiltzen duzun eposta helbide bakoitzeko avatar bat ezarri dezakezu." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -156,8 +191,7 @@ msgstr "" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"Zure pasahitza ezin da hemen aldatu. Mesedez kontaktatu administratzailea." +msgstr "Zure pasahitza ezin da hemen aldatu. Mesedez kontaktatu administratzailea." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -231,12 +265,12 @@ msgstr "Eposta esteka" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Bilatu" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Arakatzailea" @@ -296,7 +330,7 @@ msgstr "Behera mugitu" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Ezabatu" @@ -505,8 +539,7 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " msgstr "" @@ -554,8 +587,7 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " msgstr[0] "" msgstr[1] "" @@ -609,7 +641,7 @@ msgstr "" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "" @@ -625,6 +657,20 @@ msgstr "" msgid "Pages using" msgstr "" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -678,7 +724,7 @@ msgid "Exploring %(title)s" msgstr "" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "" @@ -699,42 +745,42 @@ msgstr "" msgid "Drag" msgstr "" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" +msgid "Explore child pages of '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "" -#: templates/wagtailadmin/pages/list.html:260 +#: templates/wagtailadmin/pages/list.html:263 #, python-format msgid "" "\n" @@ -742,7 +788,7 @@ msgid "" " " msgstr "" -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -752,7 +798,7 @@ msgstr "" msgid "Previous" msgstr "" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -836,9 +882,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Bilatu" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -901,9 +946,15 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Egoera" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -942,68 +993,66 @@ msgstr "" msgid "Your preferences have been updated successfully!" msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "" -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "" -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "" -#: views/pages.py:224 +#: views/pages.py:233 msgid "The page could not be created due to validation errors" msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "" -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "" -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "" -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "" -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "" -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "" - -#~ msgid "Please type a valid time" -#~ msgstr "Idatzi data egoki bat mesedez" - -#~ msgid "View draft" -#~ msgstr "Borradorea ikusi" diff --git a/wagtail/wagtailadmin/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/fr/LC_MESSAGES/django.po index b5aef8488..8e10df1d2 100644 --- a/wagtail/wagtailadmin/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/fr/LC_MESSAGES/django.po @@ -1,22 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # nahuel, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-18 23:17+0000\n" -"Last-Translator: nahuel\n" -"Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" -"fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: French (http://www.transifex.com/projects/p/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=2; plural=(n > 1);\n" #: edit_handlers.py:627 @@ -27,58 +26,100 @@ msgstr "" msgid "Common page configuration" msgstr "" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Terme de recherche" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Entrez votre identifiant" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Entrez votre adresse e-mail pour réinitialiser votre mot de passe" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Entrez votre adresse e-mail." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Désolé, vous ne pouvez pas réinitialiser votre mot de passe ici alors que " -"votre compte utilisateur est géré par un autre serveur." +msgstr "Désolé, vous ne pouvez pas réinitialiser votre mot de passe ici alors que votre compte utilisateur est géré par un autre serveur." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Cette adresse e-mail n'est pas reconnue." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Publier" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "Cette adresse e-mail n'est pas reconnue." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Tableau de bord" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Menu" @@ -91,9 +132,7 @@ msgstr "" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Ceci est votre tableau de bord sur lequel des informations importantes sur " -"le contenu que vous avez créé seront affichées." +msgstr "Ceci est votre tableau de bord sur lequel des informations importantes sur le contenu que vous avez créé seront affichées." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -101,8 +140,7 @@ msgstr "S'identifier" #: templates/wagtailadmin/login.html:18 msgid "Your username and password didn't match. Please try again." -msgstr "" -"Vos identifiant et mot de passe ne correspondent pas. Essayez de nouveau." +msgstr "Vos identifiant et mot de passe ne correspondent pas. Essayez de nouveau." #: templates/wagtailadmin/login.html:26 msgid "Sign in to Wagtail" @@ -126,10 +164,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Votre avatar est fourni par Gravatar et est relié à votre adresse e-mail. " -"Avec un compte Gravatar vous pouvez définir un avatar pour toutes les " -"adresses e-mail que vous utilisez." +msgstr "Votre avatar est fourni par Gravatar et est relié à votre adresse e-mail. Avec un compte Gravatar vous pouvez définir un avatar pour toutes les adresses e-mail que vous utilisez." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -156,8 +191,7 @@ msgstr "" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"Votre mot de passe ne peut être changé ici. Contactez un administrateur." +msgstr "Votre mot de passe ne peut être changé ici. Contactez un administrateur." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -231,12 +265,12 @@ msgstr "" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "" @@ -296,7 +330,7 @@ msgstr "Descendre" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Supprimer" @@ -408,14 +442,8 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -" <span>%(total_pages)s</span> page\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_pages)s</span> pages\n" -" " +msgstr[0] "\n <span>%(total_pages)s</span> page\n " +msgstr[1] "\n <span>%(total_pages)s</span> pages\n " #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -427,14 +455,8 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -" <span>%(total_images)s</span> image\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_images)s</span> images\n" -" " +msgstr[0] "\n <span>%(total_images)s</span> image\n " +msgstr[1] "\n <span>%(total_images)s</span> images\n " #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -446,14 +468,8 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -" <span>%(total_docs)s</span> document\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_docs)s</span> documents\n" -" " +msgstr[0] "\n <span>%(total_docs)s</span> document\n " +msgstr[1] "\n <span>%(total_docs)s</span> documents\n " #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -512,9 +528,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Vous pouvez éditer la page ici:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -524,14 +539,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" -" " -msgstr "" -"\n" -" Prévisualisation de '%(title)s', soumis par %(submitted_by)s le " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " +msgstr "\n Prévisualisation de '%(title)s', soumis par %(submitted_by)s le %(submitted_on)s.\n " #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -577,26 +587,16 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" -" " -msgstr[0] "" -"\n" -" Ceci supprime aussi une sous-pages supplémentaire.\n" -" " -msgstr[1] "" -"\n" -" Ceci supprimer aussi %(descendant_count)s sous-pages " -"supplémentaires.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " +msgstr[0] "\n Ceci supprime aussi une sous-pages supplémentaire.\n " +msgstr[1] "\n Ceci supprimer aussi %(descendant_count)s sous-pages supplémentaires.\n " #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Vous pouvez également dé-publier la page. Cela enlèvera la page des vues " -"publiques et vous pourrez l'éditer ou la publier de nouveau plus tard." +msgstr "Vous pouvez également dé-publier la page. Cela enlèvera la page des vues publiques et vous pourrez l'éditer ou la publier de nouveau plus tard." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -627,9 +627,7 @@ msgstr "Êtes-vous sûr de vouloir déplacer cette page dans '%(title)s'?" msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Êtes-vous sûr de vouloir déplacer cette page et l'ensemble de ses enfants " -"dans '%(title)s'?" +msgstr "Êtes-vous sûr de vouloir déplacer cette page et l'ensemble de ses enfants dans '%(title)s'?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -643,7 +641,7 @@ msgstr "Dé-publier %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Dé-publier" @@ -659,6 +657,20 @@ msgstr "Oui, la dé-publier" msgid "Pages using" msgstr "" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -712,7 +724,7 @@ msgid "Exploring %(title)s" msgstr "" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Ajouter une page enfant" @@ -733,53 +745,50 @@ msgstr "Activer le tri des pages enfant" msgid "Drag" msgstr "Glisser" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" +msgid "Explore child pages of '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Ajouter une page enfant à '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Ajouter une sous-page" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "Aucune page n'a été créé." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "Pourquoi ne pas en <a href=\"%(add_page_url)s\">ajouter une</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -" Page %(page_number)s sur %(num_pages)s.\n" -" " -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -789,7 +798,7 @@ msgstr "" msgid "Previous" msgstr "Précédent" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -810,7 +819,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Sélectionnez une nouvelle page parent pour <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -820,13 +829,7 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -" Il y a une correspondance\n" -" " msgstr[1] "" -"\n" -" Il y a %(counter)s correspondances\n" -" " #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -851,10 +854,7 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -" Page %(page_number)s sur %(num_pages)s.\n" -" " +msgstr "\n Page %(page_number)s sur %(num_pages)s.\n " #: templates/wagtailadmin/pages/search_results.html:54 #, python-format @@ -946,9 +946,15 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Statut" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -964,9 +970,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Page %(page_num)s de %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Utilisateurs" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -985,113 +990,69 @@ msgid "Your password has been changed successfully!" msgstr "Votre mot de passe a été changé avec succès!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "Votre mot de passe a été changé avec succès!" - -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" msgstr "" -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Page '{0}' publiée." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Page '{0}' soumise pour modération." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Page '{0}' créée." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "La page n'a pu être enregistré à cause d'erreurs de validation." +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Page '{0}' mise à jour." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "La page n'a pu être enregistré à cause d'erreurs de validation." -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "Cette page est actuellement en attente de modération" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Page '{0}' supprimée." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Page '{0}' dé-publiée." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Page '{0}' déplacée." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "La page '{0}' est actuellement en attente de modération." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Page '{0}' refusée à la publication." - -#~ msgid "View draft" -#~ msgstr "Voir le brouillon" - -#~ msgid "View live" -#~ msgstr "Voir en ligne" - -#~ msgid "Status:" -#~ msgstr "Statut:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "Où souhaitez vous créer une page du type %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "Où souhaitez vous créer ceci" - -#~ msgid "Create a new page" -#~ msgstr "Créer une nouvelle page" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "Votre nouvelle page sera enregistrée à la <em>racine</em> de votre site " -#~ "web. Vous pourrez la déplacer avec l'avoir enregistré." - -#~ msgid "More" -#~ msgstr "Plus" - -#~ msgid "Redirects" -#~ msgstr "Redirections" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "" -#~ "Désolé, vous n'êtes pas autorisé à créer une page du type <em>'{0}'</em>." - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Les pages de ce type ne peuvent être créées qu'en tant qu'enfant de " -#~ "<em>'{0}'</em>. Cette nouvelle page y sera sauvegardée." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "La page ne peut être créé du fait d'erreurs." diff --git a/wagtail/wagtailadmin/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/gl/LC_MESSAGES/django.po index 881402e2b..b58956423 100644 --- a/wagtail/wagtailadmin/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/gl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 @@ -9,15 +9,14 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-23 10:32+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" -"language/gl/)\n" -"Language: gl\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/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" #: edit_handlers.py:627 @@ -28,58 +27,100 @@ msgstr "" msgid "Common page configuration" msgstr "Configuración común de páxina" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Termo de busca" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Introduce o teu nome de usuario" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "Introduce contrasinal" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Escribe a túa dirección de correo para restaurar o teu contrasinal" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Por favor, enche a túa dirección de correo." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Sentímolo, non podes restablecer o teu contrasinal aquí porque a túa conta é " -"xestionada por outro servidor." +msgstr "Sentímolo, non podes restablecer o teu contrasinal aquí porque a túa conta é xestionada por outro servidor." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Non se recoñece a dirección de correo." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Publicar" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Este slug ya está en uso" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "Non se recoñece a dirección de correo." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Panel de control" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Menú" @@ -92,9 +133,7 @@ msgstr "Benvido ao CMS Wagtail %(site_name)s" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Este é o teu panel de control onde aparecerá información útil sobre o " -"contido que creaches." +msgstr "Este é o teu panel de control onde aparecerá información útil sobre o contido que creaches." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -126,10 +165,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"O teu avatar é provisto por Gravatar e está conectado á túa dirección de " -"correo. Cunha conta Gravatar podes establecer un avatar para calquera número " -"de correos electrónicos." +msgstr "O teu avatar é provisto por Gravatar e está conectado á túa dirección de correo. Cunha conta Gravatar podes establecer un avatar para calquera número de correos electrónicos." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -156,9 +192,7 @@ msgstr "Cambiar Contrasinal" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"O teu contrasinal non pode cambiarse aquí. Por favor, contacta co " -"administrador." +msgstr "O teu contrasinal non pode cambiarse aquí. Por favor, contacta co administrador." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -200,14 +234,11 @@ msgstr "Revisa o teu correo electrónico" #: templates/wagtailadmin/account/password_reset/done.html:16 msgid "A link to reset your password has been emailed to you." -msgstr "" -"Unha ligazón para restablecer o teu contrasinal foiche enviado por correo " -"electrónico." +msgstr "Unha ligazón para restablecer o teu contrasinal foiche enviado por correo electrónico." #: templates/wagtailadmin/account/password_reset/email.txt:2 msgid "Please follow the link below to reset your password" -msgstr "" -"Por favor, segue a ligazón de abaixo para restablecer e teu contrasinal" +msgstr "Por favor, segue a ligazón de abaixo para restablecer e teu contrasinal" #: templates/wagtailadmin/account/password_reset/email_subject.txt:2 msgid "Password reset" @@ -235,12 +266,12 @@ msgstr "Ligazón de correo electrónico" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Busca" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Explorador" @@ -254,14 +285,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Hai unha coincidencia\n" -" " -msgstr[1] "" -"\n" -" Hai %(counter)s coincidencias\n" -" " +msgstr[0] "\n Hai unha coincidencia\n " +msgstr[1] "\n Hai %(counter)s coincidencias\n " #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -306,7 +331,7 @@ msgstr "Baixar" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Eliminar" @@ -418,14 +443,8 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -" <span>%(total_pages)s</span> Páxina\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_pages)s</span> Páginas\n" -" " +msgstr[0] "\n <span>%(total_pages)s</span> Páxina\n " +msgstr[1] "\n <span>%(total_pages)s</span> Páginas\n " #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -437,14 +456,8 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -" <span>%(total_images)s</span> Imaxe\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_images)s</span> Imágenes\n" -" " +msgstr[0] "\n <span>%(total_images)s</span> Imaxe\n " +msgstr[1] "\n <span>%(total_images)s</span> Imágenes\n " #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -456,14 +469,8 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -" <span>%(total_docs)s</span> Documento\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_docs)s</span> Documentos\n" -" " +msgstr[0] "\n <span>%(total_docs)s</span> Documento\n " +msgstr[1] "\n <span>%(total_docs)s</span> Documentos\n " #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -522,9 +529,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Podes editar ala páxina aquí:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -534,14 +540,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" -" " -msgstr "" -"\n" -" Previsualizando '%(title)s', enviada por %(submitted_by)s en " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " +msgstr "\n Previsualizando '%(title)s', enviada por %(submitted_by)s en %(submitted_on)s.\n " #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -587,26 +588,16 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" -" " -msgstr[0] "" -"\n" -" Isto tamén eliminará outra subpáxina.\n" -" " -msgstr[1] "" -"\n" -" Isto tamén eliminará %(descendant_count)s subpáxinas " -"máis.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " +msgstr[0] "\n Isto tamén eliminará outra subpáxina.\n " +msgstr[1] "\n Isto tamén eliminará %(descendant_count)s subpáxinas máis.\n " #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Outra opción é non publicar a páxina. Isto non permite que o público a vexa " -"e a podes editar ou voltar a publicala máis tarde." +msgstr "Outra opción é non publicar a páxina. Isto non permite que o público a vexa e a podes editar ou voltar a publicala máis tarde." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -637,9 +628,7 @@ msgstr "¿Seguro que queres mover esta páxina a '%(title)s'?" msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"¿Seguro que queres mover esta páxina e todas as súas páxinas filla a " -"'%(title)s'?" +msgstr "¿Seguro que queres mover esta páxina e todas as súas páxinas filla a '%(title)s'?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -653,7 +642,7 @@ msgstr "Non publicar %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Non publicar" @@ -669,6 +658,20 @@ msgstr "Sí, non publicar" msgid "Pages using" msgstr "Páxinas usando" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -722,7 +725,7 @@ msgid "Exploring %(title)s" msgstr "Explorando %(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Engadir páxina filla" @@ -743,53 +746,50 @@ msgstr "Habilitar organización de páxinas fillas" msgid "Drag" msgstr "Levar" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Explorar subpáxinas de '%(title)s'" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Explorar" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Explorar páxinas fillas de '%(title)s'" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Engadir páxina filla a '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Engadir subpáxina" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "Non foi creada ningunha páxina." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "¿Por qué non <a href=\"%(add_page_url)s\">engadir unha</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -" Páxina %(page_number)s de %(num_pages)s.\n" -" " -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -799,7 +799,7 @@ msgstr "" msgid "Previous" msgstr "Anterior" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -820,7 +820,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Seleccionar unha nova páxina pai para <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -830,13 +830,7 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -" Hai unha coincidencia\n" -" " msgstr[1] "" -"\n" -" Hai %(counter)s coincidencias\n" -" " #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -861,10 +855,7 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -" Páxina %(page_number)s de %(num_pages)s.\n" -" " +msgstr "\n Páxina %(page_number)s de %(num_pages)s.\n " #: templates/wagtailadmin/pages/search_results.html:54 #, python-format @@ -876,9 +867,8 @@ msgid "Enter a search term above" msgstr "Introduce o termo de busca arriba" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Páxinas usando" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -893,9 +883,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Busca" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -958,9 +947,15 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Estado" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -976,9 +971,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Páxina %(page_num)s de %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Usuarios" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -997,122 +991,69 @@ msgid "Your password has been changed successfully!" msgstr "¡O teu contrasinal foi cambiado correctamente!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "¡O teu contrasinal foi cambiado correctamente!" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Este slug ya está en uso" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Páxina '{0}' publicada." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Páxina '{0}' enviada para ser moderada." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Páxina '{0}' creada." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "A páxina non puido ser gardada debido a erros de validación" +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Páxina '{0}' actualizada." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "A páxina non puido ser gardada debido a erros de validación" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "A páxina está á espera de ser moderada" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Páxina '{0}' eliminada." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Páxina '{0}' non publicada." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Páxina '{0}' movida." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "A páxina '{0}' non está esperando a ser moderada." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Rexeitada a publicación da página '{0}'." - -#~ msgid "Please type a valid time" -#~ msgstr "Por favor, escribe unha hora válida" - -#~ msgid "View draft" -#~ msgstr "Ver borrador" - -#~ msgid "View live" -#~ msgstr "Ver en vivo" - -#~ msgid "Status:" -#~ msgstr "Estado:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "¿Onde queres crear unha %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "Onde queres crear isto" - -#~ msgid "Create a new page" -#~ msgstr "Crear unha nova páxina" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "A túa nova páxina sera gardada no <em>nivel superior</em> do teu sitio " -#~ "web. Podes movela despois de gardar." - -#~ msgid "More" -#~ msgstr "Máis" - -#~ msgid "Redirects" -#~ msgstr "Redireccións" - -#~ msgid "Editors Picks" -#~ msgstr "Seleccións do Editor" - -#~ msgid "Snippets" -#~ msgstr "Fragmentos" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "" -#~ "Sentímolo, non tes permiso para crear unha páxina de tipo <em>'{0}'</em>." - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Páxinas deste tipo só poden ser creadas como fillas de <em>'{0}'</em>. " -#~ "Esta nova páxina será gardada ahí." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "A páxina non puido ser creada debido a erros." diff --git a/wagtail/wagtailadmin/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/mn/LC_MESSAGES/django.po index 953be6566..e8d0f5045 100644 --- a/wagtail/wagtailadmin/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/mn/LC_MESSAGES/django.po @@ -1,22 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# delgermurun <info@delgermurun.com>, 2014 +# Delgermurun Purevkhuuu <info@delgermurun.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" -"language/mn/)\n" -"Language: mn\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/language/mn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: mn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: edit_handlers.py:627 @@ -27,46 +26,92 @@ msgstr "" msgid "Common page configuration" msgstr "" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Цахим шуудангийн хаягаа оруулна уу." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." msgstr "" -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "" -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: forms.py:88 +msgid "New title" +msgstr "" + +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 #: templates/wagtailadmin/pages/_privacy_indicator.html:18 msgid "Public" msgstr "" -#: forms.py:83 +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 +#: forms.py:139 msgid "This field is required." msgstr "" @@ -74,7 +119,7 @@ msgstr "" msgid "Dashboard" msgstr "Хянах самбар" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "" @@ -220,12 +265,12 @@ msgstr "" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "" @@ -285,7 +330,7 @@ msgstr "" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "" @@ -494,8 +539,7 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " msgstr "" @@ -543,8 +587,7 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " msgstr[0] "" msgstr[1] "" @@ -598,7 +641,7 @@ msgstr "" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "" @@ -614,6 +657,20 @@ msgstr "" msgid "Pages using" msgstr "" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -667,7 +724,7 @@ msgid "Exploring %(title)s" msgstr "" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "" @@ -688,42 +745,42 @@ msgstr "" msgid "Drag" msgstr "" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" +msgid "Explore child pages of '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "" -#: templates/wagtailadmin/pages/list.html:260 +#: templates/wagtailadmin/pages/list.html:263 #, python-format msgid "" "\n" @@ -731,7 +788,7 @@ msgid "" " " msgstr "" -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -741,7 +798,7 @@ msgstr "" msgid "Previous" msgstr "" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -892,6 +949,13 @@ msgstr "" msgid "Sat" msgstr "" +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" + #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" msgstr "" @@ -929,62 +993,66 @@ msgstr "" msgid "Your preferences have been updated successfully!" msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "" -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "" -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "" -#: views/pages.py:224 +#: views/pages.py:233 msgid "The page could not be created due to validation errors" msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "" -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "" -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "" -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "" -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "" -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "" diff --git a/wagtail/wagtailadmin/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/pl/LC_MESSAGES/django.po index 72ae54ca4..b2a49d04f 100644 --- a/wagtail/wagtailadmin/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # utek <mail@utek.pl>, 2014 # utek <mail@utek.pl>, 2014 @@ -9,17 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-14 22:16+0000\n" -"Last-Translator: utek <mail@utek.pl>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" -"pl/)\n" -"Language: pl\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: edit_handlers.py:627 msgid "Scheduled publishing" @@ -29,58 +27,102 @@ msgstr "" msgid "Common page configuration" msgstr "Wspólna konfiguracja stron" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Wyszukiwania fraza" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Wpisz nazwę użytkownika" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "Wpisz hasło" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Podaj swój adres email aby zresetować hasło" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Podaj swój adres email." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Przepraszamy, nie możesz zresetować hasła tutaj ponieważ Twoje konto jest " -"zarządzane przez inny serwer." +msgstr "Przepraszamy, nie możesz zresetować hasła tutaj ponieważ Twoje konto jest zarządzane przez inny serwer." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Ten adres email nie został rozpoznany." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Opublikuj" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Ten slug jest już w użyciu" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "Ten adres email nie został rozpoznany." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Kokpit" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Menu" @@ -93,9 +135,7 @@ msgstr "Witamy na %(site_name)s Wagtail CMS" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"To jest twój kokpit, na którym będą wyświetlane pomocne informacje o treści, " -"którą stworzono." +msgstr "To jest twój kokpit, na którym będą wyświetlane pomocne informacje o treści, którą stworzono." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -127,10 +167,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Twoje zdjęcie jest dostarczane przez Gravatar i jest skojarzone z Twoim " -"adresem email. Z konta Gravatar możesz ustawić zdjęcie dla dowolnej ilości " -"adresów email, których używasz." +msgstr "Twoje zdjęcie jest dostarczane przez Gravatar i jest skojarzone z Twoim adresem email. Z konta Gravatar możesz ustawić zdjęcie dla dowolnej ilości adresów email, których używasz." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -157,9 +194,7 @@ msgstr "Zmień hasło" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"Twoje hasło nie może być zmienione. Proszę skontaktować się z " -"administratorem." +msgstr "Twoje hasło nie może być zmienione. Proszę skontaktować się z administratorem." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -233,12 +268,12 @@ msgstr "Wyślij link pocztą email" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Szukaj" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Przeglądarka" @@ -252,18 +287,9 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Jedno dopasowanie\n" -" " -msgstr[1] "" -"\n" -" Są %(counter)s dopasowania\n" -" " -msgstr[2] "" -"\n" -" Jest %(counter)s dopasowań\n" -" " +msgstr[0] "\n Jedno dopasowanie\n " +msgstr[1] "\n Są %(counter)s dopasowania\n " +msgstr[2] "\n Jest %(counter)s dopasowań\n " #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -308,7 +334,7 @@ msgstr "Przesuń w dół" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Usuń" @@ -420,18 +446,9 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -" <span>%(total_pages)s</span> Strona\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_pages)s</span> Strony\n" -" " -msgstr[2] "" -"\n" -" <span>%(total_pages)s</span> Stron\n" -" " +msgstr[0] "\n <span>%(total_pages)s</span> Strona\n " +msgstr[1] "\n <span>%(total_pages)s</span> Strony\n " +msgstr[2] "\n <span>%(total_pages)s</span> Stron\n " #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -443,18 +460,9 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -" <span>%(total_images)s</span> Obraz\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_images)s</span> Obrazy\n" -" " -msgstr[2] "" -"\n" -" <span>%(total_images)s</span> Obrazów\n" -" " +msgstr[0] "\n <span>%(total_images)s</span> Obraz\n " +msgstr[1] "\n <span>%(total_images)s</span> Obrazy\n " +msgstr[2] "\n <span>%(total_images)s</span> Obrazów\n " #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -466,18 +474,9 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -" <span>%(total_docs)s</span> Dokument\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_docs)s</span> Dokumenty\n" -" " -msgstr[2] "" -"\n" -" <span>%(total_docs)s</span> Dokumentów\n" -" " +msgstr[0] "\n <span>%(total_docs)s</span> Dokument\n " +msgstr[1] "\n <span>%(total_docs)s</span> Dokumenty\n " +msgstr[2] "\n <span>%(total_docs)s</span> Dokumentów\n " #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -536,9 +535,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Możesz edytować stronę tutaj:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -548,12 +546,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " -msgstr "" -"\n" -"Podgląd '%(title)s', Wysłano przez %(submitted_by)s, %(submitted_on)s." +msgstr "\nPodgląd '%(title)s', Wysłano przez %(submitted_by)s, %(submitted_on)s." #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -599,32 +594,17 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" -" " -msgstr[0] "" -"\n" -" Zostanie usunięta również jedna strona podrzędna\n" -" " -msgstr[1] "" -"\n" -" Zostaną usunięte również %(descendant_count)s strony " -"podrzędne.\n" -" " -msgstr[2] "" -"\n" -" Zostanie usuniętych również %(descendant_count)s stron " -"podrzędnych.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " +msgstr[0] "\n Zostanie usunięta również jedna strona podrzędna\n " +msgstr[1] "\n Zostaną usunięte również %(descendant_count)s strony podrzędne.\n " +msgstr[2] "\n Zostanie usuniętych również %(descendant_count)s stron podrzędnych.\n " #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Możesz dodatkowo cofnąć publikację tej strony. To spowoduje usunięcie jej z " -"widoku publicznego. Istnieje możliwość późniejszej edycji lub ponownej " -"publikacji." +msgstr "Możesz dodatkowo cofnąć publikację tej strony. To spowoduje usunięcie jej z widoku publicznego. Istnieje możliwość późniejszej edycji lub ponownej publikacji." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -655,9 +635,7 @@ msgstr "Czy na pewno chcesz przesunąć tę stronę do '%(title)s'?" msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Czy na pewno chcesz przesunąć tę stronę i wszystkie strony podrzędne do " -"'%(title)s'?" +msgstr "Czy na pewno chcesz przesunąć tę stronę i wszystkie strony podrzędne do '%(title)s'?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -671,7 +649,7 @@ msgstr "Cofnij publikację %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Cofnij publikację" @@ -687,6 +665,20 @@ msgstr "Tak, cofnij publikację" msgid "Pages using" msgstr "Strony używające" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -740,7 +732,7 @@ msgid "Exploring %(title)s" msgstr "Przeglądaj %(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Dodaj stronę podrzędną" @@ -761,53 +753,50 @@ msgstr "Włącz sortowanie stron podrzędnych" msgid "Drag" msgstr "Przeciągnij" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Przeglądarka podstron '%(title)s'" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Przeglądaj" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Przeglądarka stron podrzędnych '%(title)s'" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Dodaj stronę podrzędną do '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Dodaj podstronę" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "Żadna strona nie została stworzona" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "Czemu nie <a href=\"%(add_page_url)s\">dodać kilku</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -" Strona %(page_number)s z %(num_pages)s.\n" -" " -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -817,7 +806,7 @@ msgstr "" msgid "Previous" msgstr "Wstecz" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -838,7 +827,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Wybierz nową stronę nadrzędną dla <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -848,17 +837,8 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -" Jedno dopasowanie\n" -" " msgstr[1] "" -"\n" -" Są %(counter)s dopasowania\n" -" " msgstr[2] "" -"\n" -" Jest %(counter)s dopasowań\n" -" " #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -883,10 +863,7 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -" Strona %(page_number)s z %(num_pages)s.\n" -" " +msgstr "\n Strona %(page_number)s z %(num_pages)s.\n " #: templates/wagtailadmin/pages/search_results.html:54 #, python-format @@ -898,9 +875,8 @@ msgid "Enter a search term above" msgstr "Wpisz wyszukiwany ciąg powyżej" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Strony używające" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -915,9 +891,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Szukaj" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -980,9 +955,16 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Status" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -998,9 +980,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Strona %(page_num)s z %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Użytkownicy" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -1019,122 +1000,69 @@ msgid "Your password has been changed successfully!" msgstr "Twoje hasło zostało zmienione poprawnie!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "Twoje hasło zostało zmienione poprawnie!" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Ten slug jest już w użyciu" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Strona '{0}' została opublikowana." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Przesłano stronę '{0}' do przeglądu." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Stworzono stronę '{0}'." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "Strona nie mogła zostać zapisana z powodu błędów poprawności." +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Uaktualniono stronę '{0}'." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "Strona nie mogła zostać zapisana z powodu błędów poprawności." -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "Ta strona oczekuje na przejrzenie." -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Usunięto stronę '{0}'." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Cofnięto publikację strony '{0}'." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Przesunięto stronę '{0}'." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "Strona '{0}' nie oczekuje na przejrzenie." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Strona '{0}' została odrzucona." - -#~ msgid "Please type a valid time" -#~ msgstr "Proszę wpisać poprawny czas" - -#~ msgid "View draft" -#~ msgstr "Pokaż szkic" - -#~ msgid "View live" -#~ msgstr "Pokaż na żywo" - -#~ msgid "Status:" -#~ msgstr "Status:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "Gdzie chcesz stworzyć %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "Gdzie chcesz stworzyć" - -#~ msgid "Create a new page" -#~ msgstr "Stwórz nową stronę" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "Twoja nowa strona zostanie zapisana w <em>najwyższym poziomie</em>. " -#~ "Możesz ją przesunąć po zapisaniu." - -#~ msgid "More" -#~ msgstr "Więcej" - -#~ msgid "Redirects" -#~ msgstr "Przekierowania" - -#~ msgid "Editors Picks" -#~ msgstr "Wybór redakcji" - -#~ msgid "Snippets" -#~ msgstr "Snippety" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "" -#~ "Przepraszamy, nie masz uprawnień do stworzenia strony typu <em>'{0}'</em>." - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Strony tego typu mogą zostać stworzone tylko jako strony podrzędne " -#~ "<em>'{0}'</em>. Ta strona zostanie tam zapisana." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "Strona nie mogła zostać stworzona z powodu błędów." diff --git a/wagtail/wagtailadmin/locale/pt_BR/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/pt_BR/LC_MESSAGES/django.po index 47de826c3..d30aaa5f0 100644 --- a/wagtail/wagtailadmin/locale/pt_BR/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/pt_BR/LC_MESSAGES/django.po @@ -1,21 +1,22 @@ # 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 +# +# Translators: +# Douglas Miranda <douglasmirandasilva@gmail.com>, 2014 +# Gladson <gladsonbrito@gmail.com>, 2014 msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\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" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/wagtail/language/pt_BR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: edit_handlers.py:627 @@ -26,58 +27,100 @@ msgstr "" msgid "Common page configuration" msgstr "Configuração comum de página" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Termo de pesquisa" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Digite seu usuário" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "Digite sua senha" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Entre com seu email para resetar sua senha" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." -msgstr "Por favor, insira o seu e-mail" +msgstr "Por favor, insira o seu e-mail." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Desculpe, você não pode resetar sua senha aqui com seu usuário, que é " -"gerenciado por outro servidor." +msgstr "Desculpe, você não pode redefinir sua senha aqui com seu usuário, que é gerenciado por outro servidor." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Esse e-mail não é reconhecido." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Publicar" - -#: forms.py:83 -msgid "Private, accessible with the following password" +#: forms.py:88 +msgid "New title" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Esse endereço já existe" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "Público" + +#: forms.py:131 +msgid "Private, accessible with the following password" +msgstr "Privado, acessível com a seguinte senha" + +#: forms.py:139 msgid "This field is required." -msgstr "Esse e-mail não é reconhecido." +msgstr "Este campo é obrigatório." #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Painel" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Menu" @@ -90,9 +133,7 @@ msgstr "Bem vindo ao %(site_name)s Wagtail CMS" msgid "" "This is your dashboard on which helpful information about content you've " "created will be displayed." -msgstr "" -"Este é o seu painel aonde possui informações úteis sobre os conteúdos que " -"criou." +msgstr "Este é o seu painel aonde possui informações úteis sobre os conteúdos que criou." #: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 msgid "Sign in" @@ -124,10 +165,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Sua imagem é fornecido pelo Gravatar e está ligado ao seu e-mail. Com sua " -"conta do Gravatar você pode definir um avatar para qualquer quantidade de e-" -"mails que você usa." +msgstr "Sua imagem é fornecido pelo Gravatar e está ligado ao seu e-mail. Com sua conta do Gravatar você pode definir um avatar para qualquer quantidade de e-mails que você usa." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -141,7 +179,7 @@ msgstr "Altere sua senha para entrar." #: templates/wagtailadmin/account/account.html:36 msgid "Notification preferences" -msgstr "" +msgstr "Preferências de notificação" #: templates/wagtailadmin/account/account.html:40 msgid "Choose which email notifications to receive." @@ -159,11 +197,11 @@ msgstr "Sua senha não pode ser alterada. Contacte o administrador do site." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 msgid "Notification Preferences" -msgstr "" +msgstr "Preferências de notificação" #: templates/wagtailadmin/account/notification_preferences.html:16 msgid "Update" -msgstr "" +msgstr "Atualizar" #: templates/wagtailadmin/account/password_reset/complete.html:4 #: templates/wagtailadmin/account/password_reset/confirm.html:42 @@ -228,12 +266,12 @@ msgstr "Link de e-mail" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Pesquisa" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Explorar" @@ -247,14 +285,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Existe uma combinação\n" -" " -msgstr[1] "" -"\n" -" Existem %(counter)s combinações\n" -" " +msgstr[0] "\n Existe uma combinação\n " +msgstr[1] "\n Existem %(counter)s combinações\n " #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -299,7 +331,7 @@ msgstr "Mover abaixo" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Excluir" @@ -395,7 +427,7 @@ msgstr "Rascunho" #: templates/wagtailadmin/pages/list.html:78 #: templates/wagtailadmin/pages/list.html:196 msgid "Live" -msgstr "Aplicado" +msgstr "Ao vivo" #: templates/wagtailadmin/home/site_summary.html:3 msgid "Site summary" @@ -411,14 +443,8 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -" <span>%(total_pages)s</span> Página\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_pages)s</span> Páginas\n" -" " +msgstr[0] "\n <span>%(total_pages)s</span> Página\n " +msgstr[1] "\n <span>%(total_pages)s</span> Páginas\n " #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -430,14 +456,8 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -" <span>%(total_images)s</span> Imagem\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_images)s</span> Imagens\n" -" " +msgstr[0] "\n <span>%(total_images)s</span> Imagem\n " +msgstr[1] "\n <span>%(total_images)s</span> Imagens\n " #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -449,14 +469,8 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -" <span>%(total_docs)s</span> Documento\n" -" " -msgstr[1] "" -"\n" -" <span>%(total_docs)s</span> Documentos\n" -" " +msgstr[0] "\n <span>%(total_docs)s</span> Documento\n " +msgstr[1] "\n <span>%(total_docs)s</span> Documentos\n " #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -474,7 +488,7 @@ msgstr "Você pode visualizar a página aqui:" #: templates/wagtailadmin/notifications/base_notification.html:3 msgid "Edit your notification preferences here:" -msgstr "" +msgstr "Edite suas preferências de notificação aqui:" #: templates/wagtailadmin/notifications/rejected.html:1 #, python-format @@ -508,16 +522,15 @@ msgstr "Você pode visualizar a página aqui:" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:2 #: templates/wagtailadmin/page_privacy/set_privacy.html:2 msgid "Page privacy" -msgstr "" +msgstr "Página privada" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:6 msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Você pode editar sua página:" +msgstr "Você pode editar as configurações de privacidade em:" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -527,14 +540,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" -" " -msgstr "" -"\n" -" Visualizando '%(title)s', enviado por %(submitted_by)s em " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " +msgstr "\n Visualizando '%(title)s', enviado por %(submitted_by)s em %(submitted_on)s.\n " #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -580,26 +588,16 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" -" " -msgstr[0] "" -"\n" -" Isso deverá excluir mais de uma sub-página.\n" -" " -msgstr[1] "" -"\n" -" Isso deverá excluir mais de %(descendant_count)s sub-" -"páginas.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " +msgstr[0] "\n Isso deverá excluir mais de uma sub-página.\n " +msgstr[1] "\n Isso deverá excluir mais de %(descendant_count)s sub-páginas.\n " #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Você pode cancelar a publicaçåo da página de outra forma. Isso vai remover a " -"página de publicação e então pode editar e publicá-lo mais tarde." +msgstr "Você pode cancelar a publicaçåo da página de outra forma. Isso vai remover a página de publicação e então pode editar e publicá-lo mais tarde." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -630,8 +628,7 @@ msgstr "Tem certeza que deseja mover a página dentro de '%(title)s'?" msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Tem certeza que deseja mover essa página e suas filhas dentro de '%(title)s'?" +msgstr "Tem certeza que deseja mover essa página e suas filhas dentro de '%(title)s'?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -645,7 +642,7 @@ msgstr "Despublicar %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Despublicar" @@ -661,6 +658,20 @@ msgstr "Sim, quero despublicar" msgid "Pages using" msgstr "Usando páginas" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -714,7 +725,7 @@ msgid "Exploring %(title)s" msgstr "Explorando %(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Adicionar página filha" @@ -735,53 +746,50 @@ msgstr "Habilitar ordenação de páginas filhas" msgid "Drag" msgstr "Arrastar" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Explorar sub-páginas de %(title)s" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Explorar" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Explorar páginas filhas de %(title)s" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Adicionar página filha de %(title)s" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Adicionar sub-página" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "Nenhuma página foi criada." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "Porque não <a href=\"%(add_page_url)s\">adicionar uma</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -" Página %(page_number)s de %(num_pages)s.\n" -" " +msgstr "\n Página %(page_number)s de %(num_pages)s.\n " -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -791,7 +799,7 @@ msgstr "" msgid "Previous" msgstr "Anterior" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -821,18 +829,12 @@ msgid_plural "" "\n" " There are %(counter)s matching pages\n" " " -msgstr[0] "" -"\n" -" Existe uma página correspondente\n" -" " -msgstr[1] "" -"\n" -" Existe %(counter)s páginas correspondentes\n" -" " +msgstr[0] "\n Há uma página correspondente\n " +msgstr[1] "\n Existem %(counter)s páginas que correspondem\n " #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" -msgstr "Outras pesquisas" +msgstr "Outras buscas" #: templates/wagtailadmin/pages/search_results.html:18 msgid "Images" @@ -853,10 +855,7 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -" Página %(page_number)s de %(num_pages)s.\n" -" " +msgstr "\n Página %(page_number)s de %(num_pages)s.\n " #: templates/wagtailadmin/pages/search_results.html:54 #, python-format @@ -868,9 +867,8 @@ msgid "Enter a search term above" msgstr "Entre com termo de pesquisa acima" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Usando páginas" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -878,81 +876,86 @@ msgstr "Início" #: templates/wagtailadmin/shared/datetimepicker_translations.html:6 msgid "January" -msgstr "" +msgstr "Janeiro" #: templates/wagtailadmin/shared/datetimepicker_translations.html:7 msgid "February" -msgstr "" +msgstr "Fevereiro" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Pesquisa" +msgstr "Março" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" -msgstr "" +msgstr "Abril" #: templates/wagtailadmin/shared/datetimepicker_translations.html:10 msgid "May" -msgstr "" +msgstr "Maio" #: templates/wagtailadmin/shared/datetimepicker_translations.html:11 msgid "June" -msgstr "" +msgstr "Junho" #: templates/wagtailadmin/shared/datetimepicker_translations.html:12 msgid "July" -msgstr "" +msgstr "Julho" #: templates/wagtailadmin/shared/datetimepicker_translations.html:13 msgid "August" -msgstr "" +msgstr "Agosto" #: templates/wagtailadmin/shared/datetimepicker_translations.html:14 msgid "September" -msgstr "" +msgstr "Setembro" #: templates/wagtailadmin/shared/datetimepicker_translations.html:15 msgid "October" -msgstr "" +msgstr "Outubro" #: templates/wagtailadmin/shared/datetimepicker_translations.html:16 msgid "November" -msgstr "" +msgstr "Novembro" #: templates/wagtailadmin/shared/datetimepicker_translations.html:17 msgid "December" -msgstr "" +msgstr "Dezembro" #: templates/wagtailadmin/shared/datetimepicker_translations.html:20 msgid "Sun" -msgstr "" +msgstr "Dom" #: templates/wagtailadmin/shared/datetimepicker_translations.html:21 msgid "Mon" -msgstr "" +msgstr "Seg" #: templates/wagtailadmin/shared/datetimepicker_translations.html:22 msgid "Tue" -msgstr "" +msgstr "Ter" #: templates/wagtailadmin/shared/datetimepicker_translations.html:23 msgid "Wed" -msgstr "" +msgstr "Qua" #: templates/wagtailadmin/shared/datetimepicker_translations.html:24 msgid "Thu" -msgstr "" +msgstr "Qui" #: templates/wagtailadmin/shared/datetimepicker_translations.html:25 msgid "Fri" -msgstr "" +msgstr "Sex" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Status" +msgstr "Sáb" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -969,139 +972,88 @@ msgstr "Página %(page_num)s de %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 msgid "User bar" -msgstr "Barra do Usuário" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" -msgstr "Ir para Interface Administrativa" +msgstr "" #: templates/wagtailadmin/userbar/item_page_add.html:5 msgid "Add another page at this level" -msgstr "Adicionar outra página neste nivel" +msgstr "" #: templates/wagtailadmin/userbar/item_page_add.html:5 msgid "Add" -msgstr "Adicionar" +msgstr "Add" #: views/account.py:39 msgid "Your password has been changed successfully!" msgstr "Sua senha foi alterada com sucesso!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "Sua senha foi alterada com sucesso!" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Esse endereço já existe" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Página '{0}' publicada." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Página '{0}' enviada para moderação." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Página '{0}' criada." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "A página não pode ser salva devido a erros de validação" +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Página '{0}' atualizada." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "A página não pode ser salva devido a erros de validação" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "Essa página está atualmente esperando moderação" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Página '{0}' excluida." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Página '{0}' despublicada." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Página '{0}' movida." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "A página '{0}' não está mais esperando moderação." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Página '{0}' rejeitada para publicação." - -#~ msgid "Please type a valid time" -#~ msgstr "Por favor, insira um hora válida" - -#~ msgid "Status:" -#~ msgstr "Status:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "Aonde você deseja criar um %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "Aonde deseje criar isto" - -#~ msgid "Create a new page" -#~ msgstr "Criar nova página" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "Sua nova página será salva no <em>nível superior</em> do seu site. Você " -#~ "pode mover depois de salvar." - -#~ msgid "Less" -#~ msgstr "Menos" - -#~ msgid "More" -#~ msgstr "Mais" - -#~ msgid "Redirects" -#~ msgstr "Redirecionamentos" - -#~ msgid "Editors Picks" -#~ msgstr "Dicas de Redação" - -#~ msgid "Snippets" -#~ msgstr "Trechos" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "" -#~ "Desculpe, você não tem permissão para criar uma página do tipo <em>{0}</" -#~ "em>" - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Páginas desse tipo somente pode ser criada como filho de <em>{0}</em>. " -#~ "Esta nova página será salva lá." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "A página não pode ser criado devido a erros." diff --git a/wagtail/wagtailadmin/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtailadmin/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..6568f80a9 Binary files /dev/null and b/wagtail/wagtailadmin/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailadmin/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..cb6f0a69e --- /dev/null +++ b/wagtail/wagtailadmin/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,1127 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Douglas Miranda <douglasmirandasilva@gmail.com>, 2014 +# Gladson <gladsonbrito@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-03 01:50+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" + +#: edit_handlers.py:627 +msgid "Scheduled publishing" +msgstr "Publicação agendada" + +#: edit_handlers.py:641 +msgid "Common page configuration" +msgstr "Configuração comum de página" + +#: forms.py:19 +msgid "Search term" +msgstr "Procurar termo" + +#: forms.py:43 +msgid "Enter your username" +msgstr "Introduza o seu nome de utilizador" + +#: forms.py:46 +msgid "Enter password" +msgstr "Introduza a sua senha" + +#: forms.py:51 +msgid "Enter your email address to reset your password" +msgstr "Introduza o seu email para alterar a sua senha" + +#: forms.py:60 +msgid "Please fill your email address." +msgstr "Por favor, insira o seu e-mail." + +#: forms.py:73 +msgid "" +"Sorry, you cannot reset your password here as your user account is managed " +"by another server." +msgstr "" +"Desculpe, você não pode alterar a sua senha aqui porque a sua conta de " +"utilizador é gerida por outro servidor." + +#: forms.py:76 +msgid "This email address is not recognised." +msgstr "Este email não é reconhecido." + +#: forms.py:88 +msgid "New title" +msgstr "Novo título" + +#: forms.py:89 +msgid "New slug" +msgstr "Novo endereço" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "Copiar sub-páginas" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "Será copiada %(count)s sub-página." +msgstr[1] "Serão copiadas %(count)s sub-páginas." + +#: forms.py:106 +msgid "Publish copied page" +msgstr "Publicar página copiada" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "Esta página está publicada. Gostaria de publicar também a sua cópia?" + +#: forms.py:109 +msgid "Publish copies" +msgstr "Publicar cópias" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +"%(count)s das páginas a copiar estão publicadas. Gostaria de publicar " +"também a sua cópia?" +msgstr[1] "" +"%(count)s das páginas a copiar estão publicadas. Gostaria de publicar " +"também as suas cópias?" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Esse endereço já existe" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "Público" + +#: forms.py:131 +msgid "Private, accessible with the following password" +msgstr "Privado, acessível com a seguinte senha" + +#: forms.py:139 +msgid "This field is required." +msgstr "Este campo é obrigatório." + +#: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 +msgid "Dashboard" +msgstr "Painel de controlo" + +#: templates/wagtailadmin/base.html:27 +msgid "Menu" +msgstr "Menu" + +#: templates/wagtailadmin/home.html:22 +#, python-format +msgid "Welcome to the %(site_name)s Wagtail CMS" +msgstr "Bem vindo ao %(site_name)s Wagtail CMS" + +#: templates/wagtailadmin/home.html:33 +msgid "" +"This is your dashboard on which helpful information about content you've " +"created will be displayed." +msgstr "" +"Este é o seu painel de controlo no qual serão mostradas informações úteis " +"sobre os conteúdos criados por si." + +#: templates/wagtailadmin/login.html:4 templates/wagtailadmin/login.html:59 +msgid "Sign in" +msgstr "Entrar" + +#: templates/wagtailadmin/login.html:18 +msgid "Your username and password didn't match. Please try again." +msgstr "O seu nome de utilizador ou senha não estão corretos. Tente novamente." + +#: templates/wagtailadmin/login.html:26 +msgid "Sign in to Wagtail" +msgstr "Entrar no Wagtail" + +#: templates/wagtailadmin/login.html:46 +msgid "Forgotten it?" +msgstr "Esqueceu-a?" + +#: templates/wagtailadmin/account/account.html:4 +#: templates/wagtailadmin/account/account.html:6 +msgid "Account" +msgstr "Conta" + +#: templates/wagtailadmin/account/account.html:13 +msgid "Set gravatar" +msgstr "Atribuir gravatar" + +#: templates/wagtailadmin/account/account.html:17 +msgid "" +"Your avatar image is provided by Gravatar and is connected to your email " +"address. With a Gravatar account you can set an avatar for any number of " +"other email addresses you use." +msgstr "" +"A sua imagem avatar é fornecida por Gravatar e está associada ao seu email. " +"Com uma conta do Gravatar você pode definir uma imagem avatar para qualquer " +"número de emails que você use." + +#: templates/wagtailadmin/account/account.html:25 +#: templates/wagtailadmin/account/change_password.html:4 +#: templates/wagtailadmin/account/change_password.html:6 +msgid "Change password" +msgstr "Alterar senha" + +#: templates/wagtailadmin/account/account.html:29 +msgid "Change the password you use to log in." +msgstr "Altere a senha que utiliza para entrar." + +#: templates/wagtailadmin/account/account.html:36 +msgid "Notification preferences" +msgstr "Preferências de notificação" + +#: templates/wagtailadmin/account/account.html:40 +msgid "Choose which email notifications to receive." +msgstr "Escolha quais as notificações de email a receber." + +#: templates/wagtailadmin/account/change_password.html:18 +msgid "Change Password" +msgstr "Alterar Senha" + +#: templates/wagtailadmin/account/change_password.html:21 +msgid "" +"Your password can't be changed here. Please contact a site administrator." +msgstr "A sua senha não pode ser alterada. Contacte um administrador do site." + +#: templates/wagtailadmin/account/notification_preferences.html:4 +#: templates/wagtailadmin/account/notification_preferences.html:6 +msgid "Notification Preferences" +msgstr "Preferências de notificação" + +#: templates/wagtailadmin/account/notification_preferences.html:16 +msgid "Update" +msgstr "Atualizar" + +#: templates/wagtailadmin/account/password_reset/complete.html:4 +#: templates/wagtailadmin/account/password_reset/confirm.html:42 +#: templates/wagtailadmin/account/password_reset/done.html:4 +#: templates/wagtailadmin/account/password_reset/form.html:4 +#: templates/wagtailadmin/account/password_reset/form.html:37 +msgid "Reset password" +msgstr "Alterar senha" + +#: templates/wagtailadmin/account/password_reset/complete.html:15 +msgid "Password change successful" +msgstr "Senha alterada com sucesso" + +#: templates/wagtailadmin/account/password_reset/complete.html:16 +msgid "Login" +msgstr "Login" + +#: templates/wagtailadmin/account/password_reset/confirm.html:4 +#: templates/wagtailadmin/account/password_reset/confirm.html:26 +msgid "Set your new password" +msgstr "Insira a sua nova senha" + +#: templates/wagtailadmin/account/password_reset/confirm.html:19 +msgid "The passwords do not match. Please try again." +msgstr "As senhas são diferentes. Tente novamente." + +#: templates/wagtailadmin/account/password_reset/done.html:15 +msgid "Check your email" +msgstr "Verifique o seu email" + +#: templates/wagtailadmin/account/password_reset/done.html:16 +msgid "A link to reset your password has been emailed to you." +msgstr "Um link para alterar a sua senha foi-lhe enviado para o seu email." + +#: templates/wagtailadmin/account/password_reset/email.txt:2 +msgid "Please follow the link below to reset your password" +msgstr "Por favor clique no link abaixo para alterar a sua senha" + +#: templates/wagtailadmin/account/password_reset/email_subject.txt:2 +msgid "Password reset" +msgstr "Alterar senha" + +#: templates/wagtailadmin/account/password_reset/form.html:27 +msgid "Reset your password" +msgstr "Alterar a sua senha" + +#: templates/wagtailadmin/chooser/_link_types.html:5 +#: templates/wagtailadmin/chooser/_link_types.html:7 +msgid "Internal link" +msgstr "Link interno" + +#: templates/wagtailadmin/chooser/_link_types.html:11 +#: templates/wagtailadmin/chooser/_link_types.html:13 +msgid "External link" +msgstr "Link externo" + +#: templates/wagtailadmin/chooser/_link_types.html:17 +#: templates/wagtailadmin/chooser/_link_types.html:19 +msgid "Email link" +msgstr "Link de email" + +#: templates/wagtailadmin/chooser/_search_form.html:7 +#: templates/wagtailadmin/pages/search.html:3 +#: templates/wagtailadmin/pages/search.html:16 +#: templatetags/wagtailadmin_tags.py:36 +msgid "Search" +msgstr "Procurar" + +#: templates/wagtailadmin/chooser/_search_results.html:3 +#: templatetags/wagtailadmin_tags.py:35 +msgid "Explorer" +msgstr "Explorador" + +#: templates/wagtailadmin/chooser/_search_results.html:8 +#, python-format +msgid "" +"\n" +" There is one match\n" +" " +msgid_plural "" +"\n" +" There are %(counter)s matches\n" +" " +msgstr[0] "" +"\n" +" Existe uma correspondência\n" +" " +msgstr[1] "" +"\n" +" Existem %(counter)s correspondências\n" +" " + +#: templates/wagtailadmin/chooser/browse.html:2 +#: templates/wagtailadmin/chooser/search.html:2 +#: templates/wagtailadmin/edit_handlers/page_chooser_panel.html:13 +msgid "Choose a page" +msgstr "Escolher uma página" + +#: templates/wagtailadmin/chooser/email_link.html:2 +msgid "Add an email link" +msgstr "Adicionar link de email" + +#: templates/wagtailadmin/chooser/email_link.html:14 +#: templates/wagtailadmin/chooser/external_link.html:14 +msgid "Insert link" +msgstr "Inserir link" + +#: templates/wagtailadmin/chooser/external_link.html:2 +msgid "Add an external link" +msgstr "Adicionar link externo" + +#: templates/wagtailadmin/edit_handlers/chooser_panel.html:20 +msgid "Clear choice" +msgstr "Limpar escolha" + +#: templates/wagtailadmin/edit_handlers/chooser_panel.html:22 +msgid "Choose another item" +msgstr "Escolher outro item" + +#: templates/wagtailadmin/edit_handlers/chooser_panel.html:27 +msgid "Choose an item" +msgstr "Escolher um item" + +#: templates/wagtailadmin/edit_handlers/inline_panel_child.html:5 +msgid "Move up" +msgstr "Mover para cima" + +#: templates/wagtailadmin/edit_handlers/inline_panel_child.html:6 +msgid "Move down" +msgstr "Mover para baixo" + +#: templates/wagtailadmin/edit_handlers/inline_panel_child.html:8 +#: templates/wagtailadmin/pages/confirm_delete.html:7 +#: templates/wagtailadmin/pages/edit.html:45 +#: templates/wagtailadmin/pages/list.html:84 +#: templates/wagtailadmin/pages/list.html:205 +msgid "Delete" +msgstr "Eliminar" + +#: templates/wagtailadmin/edit_handlers/page_chooser_panel.html:12 +msgid "Choose another page" +msgstr "Escolher outra página" + +#: templates/wagtailadmin/home/pages_for_moderation.html:5 +msgid "Pages awaiting moderation" +msgstr "Páginas a aguardar moderação" + +#: templates/wagtailadmin/home/pages_for_moderation.html:13 +#: templates/wagtailadmin/home/recent_edits.html:12 +#: templates/wagtailadmin/pages/list.html:121 +#: templates/wagtailadmin/pages/list.html:124 +msgid "Title" +msgstr "Título" + +#: templates/wagtailadmin/home/pages_for_moderation.html:14 +#: templates/wagtailadmin/pages/list.html:22 +msgid "Parent" +msgstr "Ascendente (pai)" + +#: templates/wagtailadmin/home/pages_for_moderation.html:15 +#: templates/wagtailadmin/pages/list.html:24 +#: templates/wagtailadmin/pages/list.html:133 +#: templates/wagtailadmin/pages/list.html:136 +msgid "Type" +msgstr "Tipo" + +#: templates/wagtailadmin/home/pages_for_moderation.html:16 +msgid "Edited" +msgstr "Editado" + +#: templates/wagtailadmin/home/pages_for_moderation.html:23 +#: templates/wagtailadmin/home/recent_edits.html:21 +#: templates/wagtailadmin/pages/list.html:176 +#: templates/wagtailadmin/pages/list.html:190 +msgid "Edit this page" +msgstr "Editar esta página" + +#: templates/wagtailadmin/home/pages_for_moderation.html:28 +#: templates/wagtailadmin/pages/_moderator_userbar.html:12 +#: templates/wagtailadmin/userbar/item_page_approve.html:8 +msgid "Approve" +msgstr "Aprovar" + +#: templates/wagtailadmin/home/pages_for_moderation.html:34 +#: templates/wagtailadmin/pages/_moderator_userbar.html:17 +#: templates/wagtailadmin/userbar/item_page_reject.html:8 +msgid "Reject" +msgstr "Rejeitar" + +#: templates/wagtailadmin/home/pages_for_moderation.html:37 +#: templates/wagtailadmin/home/recent_edits.html:23 +#: templates/wagtailadmin/pages/_moderator_userbar.html:9 +#: templates/wagtailadmin/pages/list.html:72 +#: templates/wagtailadmin/pages/list.html:190 +#: templates/wagtailadmin/userbar/item_page_edit.html:5 +msgid "Edit" +msgstr "Editar" + +#: templates/wagtailadmin/home/pages_for_moderation.html:38 +#: templates/wagtailadmin/pages/create.html:41 +#: templates/wagtailadmin/pages/edit.html:56 +#: templates/wagtailadmin/pages/preview.html:5 +msgid "Preview" +msgstr "Pre-visualizar" + +#: templates/wagtailadmin/home/recent_edits.html:5 +msgid "Your most recent edits" +msgstr "Suas últimas edições" + +#: templates/wagtailadmin/home/recent_edits.html:13 +msgid "Date" +msgstr "Data" + +#: templates/wagtailadmin/home/recent_edits.html:14 +#: templates/wagtailadmin/pages/edit.html:18 +#: templates/wagtailadmin/pages/list.html:25 +#: templates/wagtailadmin/pages/list.html:142 +#: templates/wagtailadmin/pages/list.html:145 +msgid "Status" +msgstr "Estado" + +#: templates/wagtailadmin/home/recent_edits.html:25 +#: templates/wagtailadmin/pages/list.html:75 +#: templates/wagtailadmin/pages/list.html:193 +msgid "Draft" +msgstr "Rascunho" + +#: templates/wagtailadmin/home/recent_edits.html:28 +#: templates/wagtailadmin/pages/list.html:78 +#: templates/wagtailadmin/pages/list.html:196 +msgid "Live" +msgstr "Publicado" + +#: templates/wagtailadmin/home/site_summary.html:3 +msgid "Site summary" +msgstr "Resumo do Site" + +#: templates/wagtailadmin/home/site_summary.html:7 +#, python-format +msgid "" +"\n" +" <span>%(total_pages)s</span> Page\n" +" " +msgid_plural "" +"\n" +" <span>%(total_pages)s</span> Pages\n" +" " +msgstr[0] "" +"\n" +" <span>%(total_pages)s</span> Página\n" +" " +msgstr[1] "" +"\n" +" <span>%(total_pages)s</span> Páginas\n" +" " + +#: templates/wagtailadmin/home/site_summary.html:16 +#, python-format +msgid "" +"\n" +" <span>%(total_images)s</span> Image\n" +" " +msgid_plural "" +"\n" +" <span>%(total_images)s</span> Images\n" +" " +msgstr[0] "" +"\n" +" <span>%(total_images)s</span> Imagem\n" +" " +msgstr[1] "" +"\n" +" <span>%(total_images)s</span> Imagens\n" +" " + +#: templates/wagtailadmin/home/site_summary.html:25 +#, python-format +msgid "" +"\n" +" <span>%(total_docs)s</span> Document\n" +" " +msgid_plural "" +"\n" +" <span>%(total_docs)s</span> Documents\n" +" " +msgstr[0] "" +"\n" +" <span>%(total_docs)s</span> Documento\n" +" " +msgstr[1] "" +"\n" +" <span>%(total_docs)s</span> Documentos\n" +" " + +#: templates/wagtailadmin/notifications/approved.html:1 +#, python-format +msgid "The page \"%(title)s\" has been approved" +msgstr "A página \"%(title)s\" foi aprovada" + +#: templates/wagtailadmin/notifications/approved.html:2 +#, python-format +msgid "The page \"%(title)s\" has been approved." +msgstr "A página \"%(title)s\" foi aprovada." + +#: templates/wagtailadmin/notifications/approved.html:4 +msgid "You can view the page here:" +msgstr "Pode visualizar a página aqui:" + +#: templates/wagtailadmin/notifications/base_notification.html:3 +msgid "Edit your notification preferences here:" +msgstr "Edite as suas preferências de notificação aqui:" + +#: templates/wagtailadmin/notifications/rejected.html:1 +#, python-format +msgid "The page \"%(title)s\" has been rejected" +msgstr "A página \"%(title)s\" foi rejeitada" + +#: templates/wagtailadmin/notifications/rejected.html:2 +#, python-format +msgid "The page \"%(title)s\" has been rejected." +msgstr "A página \"%(title)s\" foi rejeitada" + +#: templates/wagtailadmin/notifications/rejected.html:4 +#: templates/wagtailadmin/notifications/submitted.html:5 +msgid "You can edit the page here:" +msgstr "Você pode editar a página aqui:" + +#: templates/wagtailadmin/notifications/submitted.html:1 +#, python-format +msgid "The page \"%(page)s\" has been submitted for moderation" +msgstr "A página \"%(page)s\" foi enviada para moderação" + +#: templates/wagtailadmin/notifications/submitted.html:2 +#, python-format +msgid "The page \"%(page)s\" has been submitted for moderation." +msgstr "A página \"%(page)s\" foi enviada para moderação." + +#: templates/wagtailadmin/notifications/submitted.html:4 +msgid "You can preview the page here:" +msgstr "Pode pre-visualizar a página aqui:" + +#: templates/wagtailadmin/page_privacy/ancestor_privacy.html:2 +#: templates/wagtailadmin/page_privacy/set_privacy.html:2 +msgid "Page privacy" +msgstr "Privacidade da página" + +#: templates/wagtailadmin/page_privacy/ancestor_privacy.html:6 +msgid "This page has been made private by a parent page." +msgstr "Esta página foi classificada como privada por uma página ascendente" + +#: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 +msgid "You can edit the privacy settings on:" +msgstr "Você pode editar as configurações de privacidade em:" + +#: templates/wagtailadmin/page_privacy/set_privacy.html:6 +msgid "<b>Note:</b> privacy changes apply to all children of this page too." +msgstr "" +"<b>Nota:</b> as alterações de privacidade também serão aplicadas a todas as " +"páginas filhas desta página." + +#: templates/wagtailadmin/pages/_moderator_userbar.html:4 +#, python-format +msgid "" +"\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on " +"%(submitted_on)s.\n" +" " +msgstr "" +"\n" +" Pre-visualizando '%(title)s', enviado por %(submitted_by)s em " +"%(submitted_on)s.\n" +" " + +#: templates/wagtailadmin/pages/_privacy_indicator.html:9 +msgid "Privacy" +msgstr "Privacidade" + +#: templates/wagtailadmin/pages/_privacy_indicator.html:14 +#: templates/wagtailadmin/pages/_privacy_indicator.html:20 +msgid "Private" +msgstr "Privada" + +#: templates/wagtailadmin/pages/add_subpage.html:6 +#, python-format +msgid "Create a page in %(title)s" +msgstr "Criar uma página em %(title)s" + +#: templates/wagtailadmin/pages/add_subpage.html:9 +msgid "Create a page in" +msgstr "Criar uma página em" + +#: templates/wagtailadmin/pages/add_subpage.html:13 +msgid "Choose which type of page you'd like to create." +msgstr "Escolha o tipo de página que gostaria de criar." + +#: templates/wagtailadmin/pages/add_subpage.html:26 +#, python-format +msgid "Pages using %(page_type)s" +msgstr "Páginas usando %(page_type)s" + +#: templates/wagtailadmin/pages/confirm_delete.html:3 +#, python-format +msgid "Delete %(title)s" +msgstr "Eliminar %(title)s" + +#: templates/wagtailadmin/pages/confirm_delete.html:12 +msgid "Are you sure you want to delete this page?" +msgstr "Tem certeza que deseja eliminar esta página?" + +#: templates/wagtailadmin/pages/confirm_delete.html:14 +#, python-format +msgid "" +"\n" +" This will also delete one more subpage.\n" +" " +msgid_plural "" +"\n" +" This will also delete %(descendant_count)s more " +"subpages.\n" +" " +msgstr[0] "" +"\n" +" Isto também eliminará uma ou mais sub-páginas.\n" +" " +msgstr[1] "" +"\n" +" Isto também eliminará mais %(descendant_count)s sub-" +"páginas.\n" +" " + +#: templates/wagtailadmin/pages/confirm_delete.html:22 +msgid "" +"Alternatively you can unpublish the page. This removes the page from public " +"view and you can edit or publish it again later." +msgstr "" +"Em alternativa, poderá despublicar a página. Assim, a página deixará de " +"estar visível publicamente, podendo você voltar a editá-la ou publicá-la " +"mais tarde." + +#: templates/wagtailadmin/pages/confirm_delete.html:26 +msgid "Delete it" +msgstr "Eliminá-la" + +#: templates/wagtailadmin/pages/confirm_delete.html:26 +msgid "Unpublish it" +msgstr "Despublicá-la" + +#: templates/wagtailadmin/pages/confirm_move.html:3 +#, python-format +msgid "Move %(title)s" +msgstr "Mover %(title)s" + +#: templates/wagtailadmin/pages/confirm_move.html:6 +#: templates/wagtailadmin/pages/list.html:81 +#: templates/wagtailadmin/pages/list.html:199 +msgid "Move" +msgstr "Mover" + +#: templates/wagtailadmin/pages/confirm_move.html:11 +#, python-format +msgid "Are you sure you want to move this page into '%(title)s'?" +msgstr "Tem certeza que deseja mover esta página para dentro de '%(title)s'?" + +#: templates/wagtailadmin/pages/confirm_move.html:13 +#, python-format +msgid "" +"Are you sure you want to move this page and all of its children into " +"'%(title)s'?" +msgstr "" +"Tem a certeza que deseja mover esta página e todas as suas páginas filhas " +"para dentro de '%(title)s'?" + +#: templates/wagtailadmin/pages/confirm_move.html:18 +msgid "Yes, move this page" +msgstr "Sim, mover esta página" + +#: templates/wagtailadmin/pages/confirm_unpublish.html:3 +#, python-format +msgid "Unpublish %(title)s" +msgstr "Despublicar %(title)s" + +#: templates/wagtailadmin/pages/confirm_unpublish.html:6 +#: templates/wagtailadmin/pages/edit.html:42 +#: templates/wagtailadmin/pages/list.html:87 +#: templates/wagtailadmin/pages/list.html:208 +msgid "Unpublish" +msgstr "Despublicar" + +#: templates/wagtailadmin/pages/confirm_unpublish.html:10 +msgid "Are you sure you want to unpublish this page?" +msgstr "Tem certeza que deseja despublicar esta página?" + +#: templates/wagtailadmin/pages/confirm_unpublish.html:13 +msgid "Yes, unpublish it" +msgstr "Sim, quero despublicar" + +#: templates/wagtailadmin/pages/content_type_use.html:7 +msgid "Pages using" +msgstr "Páginas usando" + +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "Copiar %(title)s" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "Copiar" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "Copiar esta página" + +#: templates/wagtailadmin/pages/create.html:5 +#, python-format +msgid "New %(page_type)s" +msgstr "Nova %(page_type)s" + +#: templates/wagtailadmin/pages/create.html:15 +msgid "New" +msgstr "Nova" + +#: templates/wagtailadmin/pages/create.html:29 +msgid "Save as draft" +msgstr "Guardar como rascunho" + +#: templates/wagtailadmin/pages/create.html:33 +#: templates/wagtailadmin/pages/edit.html:48 +msgid "Publish" +msgstr "Publicar" + +#: templates/wagtailadmin/pages/create.html:35 +#: templates/wagtailadmin/pages/edit.html:50 +msgid "Submit for moderation" +msgstr "Enviar para moderação" + +#: templates/wagtailadmin/pages/edit.html:5 +#, python-format +msgid "Editing %(title)s" +msgstr "Editando %(title)s" + +#: templates/wagtailadmin/pages/edit.html:15 +#, python-format +msgid "Editing <span>%(title)s</span>" +msgstr "Editando <span>%(title)s</span>" + +#: templates/wagtailadmin/pages/edit.html:38 +msgid "Save draft" +msgstr "Guardar rascunho" + +#: templates/wagtailadmin/pages/edit.html:77 +#, python-format +msgid "Last modified: %(last_mod)s" +msgstr "Última modificação: %(last_mod)s" + +#: templates/wagtailadmin/pages/edit.html:79 +#, python-format +msgid "by %(modified_by)s" +msgstr "por %(modified_by)s" + +#: templates/wagtailadmin/pages/index.html:3 +#, python-format +msgid "Exploring %(title)s" +msgstr "Explorando %(title)s" + +#: templates/wagtailadmin/pages/list.html:90 +#: templates/wagtailadmin/pages/list.html:211 +msgid "Add child page" +msgstr "Adicionar página filha" + +#: templates/wagtailadmin/pages/list.html:112 +msgid "Disable ordering of child pages" +msgstr "Desativar ordenação de páginas filhas" + +#: templates/wagtailadmin/pages/list.html:112 +#: templates/wagtailadmin/pages/list.html:114 +msgid "Order" +msgstr "Ordem" + +#: templates/wagtailadmin/pages/list.html:114 +msgid "Enable ordering of child pages" +msgstr "Ativar ordenação de páginas filhas" + +#: templates/wagtailadmin/pages/list.html:158 +msgid "Drag" +msgstr "Arrastar" + +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#, python-format +msgid "Explorer subpages of '%(title)s'" +msgstr "Explorar sub-páginas de %(title)s" + +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 +msgid "Explore" +msgstr "Explorar" + +#: templates/wagtailadmin/pages/list.html:245 +#, python-format +msgid "Explore child pages of '%(title)s'" +msgstr "Explorar as páginas filhas de '%(title)s'" + +#: templates/wagtailadmin/pages/list.html:247 +#, python-format +msgid "Add a child page to '%(title)s'" +msgstr "Adicionar página filha a %(title)s" + +#: templates/wagtailadmin/pages/list.html:247 +msgid "Add subpage" +msgstr "Adicionar sub-página" + +#: templates/wagtailadmin/pages/list.html:256 +msgid "No pages have been created." +msgstr "Nenhuma página foi criada." + +#: templates/wagtailadmin/pages/list.html:256 +#, python-format +msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" +msgstr "Porque não <a href=\"%(add_page_url)s\">adicionar uma</a>?" + +#: templates/wagtailadmin/pages/list.html:263 +#, python-format +msgid "" +"\n" +" Page %(page_number)s of %(num_pages)s.\n" +" " +msgstr "" +"\n" +" Página %(page_number)s de %(num_pages)s.\n" +" " + +#: templates/wagtailadmin/pages/list.html:269 +#: templates/wagtailadmin/pages/search_results.html:35 +#: templates/wagtailadmin/pages/search_results.html:37 +#: templates/wagtailadmin/pages/usage_results.html:13 +#: templates/wagtailadmin/shared/pagination_nav.html:21 +#: templates/wagtailadmin/shared/pagination_nav.html:23 +#: templates/wagtailadmin/shared/pagination_nav.html:25 +msgid "Previous" +msgstr "Anterior" + +#: templates/wagtailadmin/pages/list.html:274 +#: templates/wagtailadmin/pages/search_results.html:44 +#: templates/wagtailadmin/pages/search_results.html:46 +#: templates/wagtailadmin/pages/usage_results.html:18 +#: templates/wagtailadmin/shared/pagination_nav.html:32 +#: templates/wagtailadmin/shared/pagination_nav.html:34 +#: templates/wagtailadmin/shared/pagination_nav.html:36 +msgid "Next" +msgstr "Próxima" + +#: templates/wagtailadmin/pages/move_choose_destination.html:3 +#, python-format +msgid "Select a new parent page for %(title)s" +msgstr "Selecione uma nova página ascendente para %(title)s" + +#: templates/wagtailadmin/pages/move_choose_destination.html:7 +#, python-format +msgid "Select a new parent page for <span>%(title)s</span>" +msgstr "Selecione uma nova página ascendente para <span>%(title)s</span>" + +#: templates/wagtailadmin/pages/search_results.html:6 +#, python-format +msgid "" +"\n" +" There is one matching page\n" +" " +msgid_plural "" +"\n" +" There are %(counter)s matching pages\n" +" " +msgstr[0] "" +"\n" +" Existe uma página correspondente\n" +" " +msgstr[1] "" +"\n" +" Existem %(counter)s páginas correspondentes\n" +" " + +#: templates/wagtailadmin/pages/search_results.html:16 +msgid "Other searches" +msgstr "Outras pesquisas" + +#: templates/wagtailadmin/pages/search_results.html:18 +msgid "Images" +msgstr "Imagens" + +#: templates/wagtailadmin/pages/search_results.html:19 +msgid "Documents" +msgstr "Documentos" + +#: templates/wagtailadmin/pages/search_results.html:20 +msgid "Users" +msgstr "Utilizadores" + +#: templates/wagtailadmin/pages/search_results.html:28 +#: templates/wagtailadmin/pages/usage_results.html:7 +#, python-format +msgid "" +"\n" +" Page %(page_number)s of %(num_pages)s.\n" +" " +msgstr "" +"\n" +" Página %(page_number)s de %(num_pages)s.\n" +" " + +#: templates/wagtailadmin/pages/search_results.html:54 +#, python-format +msgid "Sorry, no pages match <em>\"%(query_string)s\"</em>" +msgstr "Desculpe, nenhuma página satisfaz <em>\"%(query_string)s\"</em>" + +#: templates/wagtailadmin/pages/search_results.html:56 +msgid "Enter a search term above" +msgstr "Introduza um termo de pesquisa acima" + +#: templates/wagtailadmin/pages/usage_results.html:24 +msgid "No pages use" +msgstr "Nenhuma página usa" + +#: templates/wagtailadmin/shared/breadcrumb.html:6 +msgid "Home" +msgstr "Início" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:6 +msgid "January" +msgstr "Janeiro" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:7 +msgid "February" +msgstr "Fevereiro" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:8 +msgid "March" +msgstr "Março" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:9 +msgid "April" +msgstr "Abril" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:10 +msgid "May" +msgstr "Maio" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:11 +msgid "June" +msgstr "Junho" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:12 +msgid "July" +msgstr "Julho" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:13 +msgid "August" +msgstr "Agosto" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:14 +msgid "September" +msgstr "Setembro" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:15 +msgid "October" +msgstr "Outubro" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:16 +msgid "November" +msgstr "Novembro" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:17 +msgid "December" +msgstr "Dezembro" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:20 +msgid "Sun" +msgstr "Dom" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:21 +msgid "Mon" +msgstr "Seg" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:22 +msgid "Tue" +msgstr "Ter" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:23 +msgid "Wed" +msgstr "Qua" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:24 +msgid "Thu" +msgstr "Qui" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:25 +msgid "Fri" +msgstr "Sex" + +#: templates/wagtailadmin/shared/datetimepicker_translations.html:26 +msgid "Sat" +msgstr "Sáb" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "Em uso %(useage_count)s time" +msgstr[1] "Em uso %(useage_count)s times" + +#: templates/wagtailadmin/shared/main_nav.html:10 +msgid "Account settings" +msgstr "Configurações da Conta" + +#: templates/wagtailadmin/shared/main_nav.html:11 +msgid "Log out" +msgstr "Sair" + +#: templates/wagtailadmin/shared/pagination_nav.html:16 +#, python-format +msgid "Page %(page_num)s of %(total_pages)s." +msgstr "Página %(page_num)s de %(total_pages)s." + +#: templates/wagtailadmin/userbar/base.html:4 +msgid "User bar" +msgstr "Barra de utilizador" + +#: templates/wagtailadmin/userbar/base.html:14 +msgid "Go to Wagtail admin interface" +msgstr "Ir para a página admin do Wagtail" + +#: templates/wagtailadmin/userbar/item_page_add.html:5 +msgid "Add another page at this level" +msgstr "Adicionar outra página a este nível" + +#: templates/wagtailadmin/userbar/item_page_add.html:5 +msgid "Add" +msgstr "Adicionar" + +#: views/account.py:39 +msgid "Your password has been changed successfully!" +msgstr "A sua senha foi alterada com sucesso!" + +#: views/account.py:60 +msgid "Your preferences have been updated successfully!" +msgstr "As suas preferências foram atualizadas com sucesso!" + +#: views/pages.py:169 views/pages.py:286 +msgid "Go live date/time must be before expiry date/time" +msgstr "A data/hora de publicação tem de ser anterior à data/hora terminal" + +#: views/pages.py:179 views/pages.py:296 +msgid "Expiry date/time must be in the future" +msgstr "A data/hora terminal tem de ocorrer no futuro" + +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 +msgid "Page '{0}' published." +msgstr "Página '{0}' publicada." + +#: views/pages.py:221 views/pages.py:353 +msgid "Page '{0}' submitted for moderation." +msgstr "Página '{0}' enviada para moderação." + +#: views/pages.py:224 +msgid "Page '{0}' created." +msgstr "Página '{0}' criada." + +#: views/pages.py:233 +msgid "The page could not be created due to validation errors" +msgstr "Esta página não pôde ser criada devido a erros na validação" + +#: views/pages.py:356 +msgid "Page '{0}' updated." +msgstr "Página '{0}' atualizada." + +#: views/pages.py:365 +msgid "The page could not be saved due to validation errors" +msgstr "A página não pôde ser guardada devido a erros na validação" + +#: views/pages.py:378 +msgid "This page is currently awaiting moderation" +msgstr "Essa página aguarda por moderação" + +#: views/pages.py:409 +msgid "Page '{0}' deleted." +msgstr "Página '{0}' eliminada." + +#: views/pages.py:575 +msgid "Page '{0}' unpublished." +msgstr "Página '{0}' despublicada." + +#: views/pages.py:627 +msgid "Page '{0}' moved." +msgstr "Página '{0}' movida." + +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "Página '{0}' e {1} sub-páginas copiadas." + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "Página '{0}' copiada." + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 +msgid "The page '{0}' is not currently awaiting moderation." +msgstr "A página '{0}' já não está aguarda moderação." + +#: views/pages.py:810 +msgid "Page '{0}' rejected for publication." +msgstr "Página '{0}' rejeitada para publicação." diff --git a/wagtail/wagtailadmin/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/ro/LC_MESSAGES/django.po index 0bccf350a..4967b5f5f 100644 --- a/wagtail/wagtailadmin/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/ro/LC_MESSAGES/django.po @@ -1,24 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# zerolab, 2014 +# Dan Braghis, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-18 13:19+0000\n" -"Last-Translator: zerolab\n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" -"language/ro/)\n" -"Language: ro\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" #: edit_handlers.py:627 msgid "Scheduled publishing" @@ -28,58 +26,102 @@ msgstr "" msgid "Common page configuration" msgstr "Configurație de pagini generală" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "Termen de căutare" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "Introduceți numele de utilizator" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "Introduceți parola" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "Introduceți adresa de e-mail pentru a reseta parola" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "Introduceți adresa de e-mail." -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." -msgstr "" -"Ne pare rău, dar nu puteți reseta parola aici. Contul dvs. de utilizator " -"este gestionat de un alt server." +msgstr "Ne pare rău, dar nu puteți reseta parola aici. Contul dvs. de utilizator este gestionat de un alt server." -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "Adresa e-mail nu este recunoscută." -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "Publică" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "Această fisă a fost deja folosită" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "Adresa e-mail nu este recunoscută." +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "Bord" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "Meniu" @@ -100,8 +142,7 @@ msgstr "Conectare" #: templates/wagtailadmin/login.html:18 msgid "Your username and password didn't match. Please try again." -msgstr "" -"Numele de utilizator și parola nu corespund. Vă rugăm să încercați din nou." +msgstr "Numele de utilizator și parola nu corespund. Vă rugăm să încercați din nou." #: templates/wagtailadmin/login.html:26 msgid "Sign in to Wagtail" @@ -125,10 +166,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"Avatarul este oferit de Gravatar și este legat de adresa dvs. de e-mail. " -"Având un cont Gravatar, puteți seta un avatar pentru orice număr de adrese e-" -"mail folosite." +msgstr "Avatarul este oferit de Gravatar și este legat de adresa dvs. de e-mail. Având un cont Gravatar, puteți seta un avatar pentru orice număr de adrese e-mail folosite." #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -155,9 +193,7 @@ msgstr "Schimbă parola" #: templates/wagtailadmin/account/change_password.html:21 msgid "" "Your password can't be changed here. Please contact a site administrator." -msgstr "" -"Parola nu poate fi schimbată aici. Vă rugăm să contactați administratorii " -"sitului." +msgstr "Parola nu poate fi schimbată aici. Vă rugăm să contactați administratorii sitului." #: templates/wagtailadmin/account/notification_preferences.html:4 #: templates/wagtailadmin/account/notification_preferences.html:6 @@ -231,12 +267,12 @@ msgstr "Link e-mail" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "Căutare" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "Explorator" @@ -250,15 +286,9 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Există o potrivire" -msgstr[1] "" -"\n" -"Sunt %(counter)s potriviri" -msgstr[2] "" -"\n" -"Sunt %(counter)s potriviri" +msgstr[0] "\nExistă o potrivire" +msgstr[1] "\nSunt %(counter)s potriviri" +msgstr[2] "\nSunt %(counter)s potriviri" #: templates/wagtailadmin/chooser/browse.html:2 #: templates/wagtailadmin/chooser/search.html:2 @@ -303,7 +333,7 @@ msgstr "Deplasează în jos" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "Șterge" @@ -415,15 +445,9 @@ msgid_plural "" "\n" " <span>%(total_pages)s</span> Pages\n" " " -msgstr[0] "" -"\n" -"<span>%(total_pages)s</span> pagină" -msgstr[1] "" -"\n" -"<span>%(total_pages)s</span> pagini" -msgstr[2] "" -"\n" -"<span>%(total_pages)s</span> pagini" +msgstr[0] "\n<span>%(total_pages)s</span> pagină" +msgstr[1] "\n<span>%(total_pages)s</span> pagini" +msgstr[2] "\n<span>%(total_pages)s</span> pagini" #: templates/wagtailadmin/home/site_summary.html:16 #, python-format @@ -435,15 +459,9 @@ msgid_plural "" "\n" " <span>%(total_images)s</span> Images\n" " " -msgstr[0] "" -"\n" -"<span>%(total_images)s</span> imagine" -msgstr[1] "" -"\n" -"<span>%(total_images)s</span> imagini" -msgstr[2] "" -"\n" -"<span>%(total_images)s</span> imagini" +msgstr[0] "\n<span>%(total_images)s</span> imagine" +msgstr[1] "\n<span>%(total_images)s</span> imagini" +msgstr[2] "\n<span>%(total_images)s</span> imagini" #: templates/wagtailadmin/home/site_summary.html:25 #, python-format @@ -455,15 +473,9 @@ msgid_plural "" "\n" " <span>%(total_docs)s</span> Documents\n" " " -msgstr[0] "" -"\n" -"<span>%(total_docs)s</span> document" -msgstr[1] "" -"\n" -"<span>%(total_docs)s</span> documente" -msgstr[2] "" -"\n" -"<span>%(total_docs)s</span> documente" +msgstr[0] "\n<span>%(total_docs)s</span> document" +msgstr[1] "\n<span>%(total_docs)s</span> documente" +msgstr[2] "\n<span>%(total_docs)s</span> documente" #: templates/wagtailadmin/notifications/approved.html:1 #, python-format @@ -522,9 +534,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "Puteți edita pagina aici:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -534,13 +545,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " -msgstr "" -"\n" -"Examinare '%(title)s', trimisă de %(submitted_by)s pe data de " -"%(submitted_on)s." +msgstr "\nExaminare '%(title)s', trimisă de %(submitted_by)s pe data de %(submitted_on)s." #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -586,26 +593,17 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " -msgstr[0] "" -"\n" -"Această acțiune va șterge și o subpagină." -msgstr[1] "" -"\n" -"Această acțiune va șterge %(descendant_count)s subpagini." -msgstr[2] "" -"\n" -"Această acțiune va șterge %(descendant_count)s subpagini." +msgstr[0] "\nAceastă acțiune va șterge și o subpagină." +msgstr[1] "\nAceastă acțiune va șterge %(descendant_count)s subpagini." +msgstr[2] "\nAceastă acțiune va șterge %(descendant_count)s subpagini." #: templates/wagtailadmin/pages/confirm_delete.html:22 msgid "" "Alternatively you can unpublish the page. This removes the page from public " "view and you can edit or publish it again later." -msgstr "" -"Puteți să anulați pagina ca alternativă. Această acțiune retrage pagina din " -"domeniul public, dar puteți edita sau publica pagina ulterior." +msgstr "Puteți să anulați pagina ca alternativă. Această acțiune retrage pagina din domeniul public, dar puteți edita sau publica pagina ulterior." #: templates/wagtailadmin/pages/confirm_delete.html:26 msgid "Delete it" @@ -636,8 +634,7 @@ msgstr "Sigur doriți să mutați această pagină în '%(title)s'?" msgid "" "Are you sure you want to move this page and all of its children into " "'%(title)s'?" -msgstr "" -"Sigur doriți să mutați această pagină și paginile dependente în '%(title)s'?" +msgstr "Sigur doriți să mutați această pagină și paginile dependente în '%(title)s'?" #: templates/wagtailadmin/pages/confirm_move.html:18 msgid "Yes, move this page" @@ -651,7 +648,7 @@ msgstr "Anulează publicarea %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "Anulează publicarea" @@ -667,6 +664,20 @@ msgstr "Da, anulează publicarea" msgid "Pages using" msgstr "Pagini cu" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -720,7 +731,7 @@ msgid "Exploring %(title)s" msgstr "Explorare %(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "Adaugă pagină dependentă" @@ -741,52 +752,50 @@ msgstr "Activează rânduirea paginilor dependente" msgid "Drag" msgstr "Glisează" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "Explorează subpaginile '%(title)s'" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "Explorează" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "Explorează paginile dependente de '%(title)s'" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "Adaugă o pagină dependentă de '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "Adaugă subpagină" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "Nu a fost creată nici o pagină." -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "De ce să nu <a href=\"%(add_page_url)s\">adăugați una</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -"Pagina %(page_number)s din %(num_pages)s." -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -796,7 +805,7 @@ msgstr "" msgid "Previous" msgstr "Precedent" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -817,7 +826,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "Selectează o pagină de bază nouă pentru <span>%(title)s</span>" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -827,14 +836,8 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -"Există o potrivire" msgstr[1] "" -"\n" -"Sunt %(counter)s potriviri" msgstr[2] "" -"\n" -"Sunt %(counter)s potriviri" #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -859,24 +862,20 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -"Pagina %(page_number)s din %(num_pages)s." +msgstr "\nPagina %(page_number)s din %(num_pages)s." #: templates/wagtailadmin/pages/search_results.html:54 #, python-format msgid "Sorry, no pages match <em>\"%(query_string)s\"</em>" -msgstr "" -"Ne pare rău, \"<em>%(query_string)s</em>\" nu se potrivește cu nici o pagină" +msgstr "Ne pare rău, \"<em>%(query_string)s</em>\" nu se potrivește cu nici o pagină" #: templates/wagtailadmin/pages/search_results.html:56 msgid "Enter a search term above" msgstr "Introduceți termenii de căutare mai sus" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "Pagini cu" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -891,9 +890,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "Căutare" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -956,9 +954,16 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "Status" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -974,9 +979,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "Pagina %(page_num)s din %(total_pages)s." #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "Utilizatori" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -995,123 +999,69 @@ msgid "Your password has been changed successfully!" msgstr "Parola a fost schimbată cu succes!" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "Parola a fost schimbată cu succes!" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "Această fisă a fost deja folosită" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "Pagina '{0}' a fost publicată." -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "Pagina '{0}' a fost trimisă pentru moderare." -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "Pagina '{0}' a fost creată." -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "Pagina nu a fost salvată din cauza erorilor de validare." +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "Pagina '{0}' a fost actualizată." -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "Pagina nu a fost salvată din cauza erorilor de validare." -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "Această pagină este în moderare" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "Pagina '{0}' a fost ștearsă." -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "Publicare anulată pentru pagina '{0}'." -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "Pagina '{0}' a fost mutată." -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "Pagina '{0}' nu este în moderare la moment." -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "Publicare paginii '{0}' a fost refuzată." - -#~ msgid "Please type a valid time" -#~ msgstr "Introduceți o oră validă" - -#~ msgid "View draft" -#~ msgstr "Vezi ciornă" - -#~ msgid "View live" -#~ msgstr "Vezi în direct" - -#~ msgid "Status:" -#~ msgstr "Stare:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "Unde doriți să creați %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "Unde doriți să creați" - -#~ msgid "Create a new page" -#~ msgstr "Crează pagină nouă" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "" -#~ "Pagina va fi salvată în <em>nivelul de sus</em> al sitului. După care " -#~ "puteți să o mutați." - -#~ msgid "More" -#~ msgstr "Mai mult" - -#~ msgid "Redirects" -#~ msgstr "Redirecționări" - -#~ msgid "Editors Picks" -#~ msgstr "Selecții editoriale" - -#~ msgid "Snippets" -#~ msgstr "Fragmente" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "" -#~ "Ne pare rău, dar nu aveți nivelul de acces potrivit pentru a crea pagini " -#~ "de tipul <em>'{0}'</em>." - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "" -#~ "Paginile de acest tip pot fi create numai ca fiind dependente de " -#~ "<em>'{0}'</em>. Această pagină va fi salvată acolo." - -#~ msgid "The page could not be created due to errors." -#~ msgstr "Pagina nu a fost creată din cauza erorilor." diff --git a/wagtail/wagtailadmin/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/zh/LC_MESSAGES/django.po index 2aaaee23e..7aa5b5fec 100644 --- a/wagtail/wagtailadmin/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/zh/LC_MESSAGES/django.po @@ -1,21 +1,20 @@ # 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: 2014-07-11 10:41+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" -"zh/)\n" -"Language: zh\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/zh/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" "Plural-Forms: nplurals=1; plural=0;\n" #: edit_handlers.py:627 @@ -26,56 +25,98 @@ msgstr "" msgid "Common page configuration" msgstr "" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "搜索词" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" -msgstr "请输入用户名" +msgstr "" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" -msgstr "请输入密码" +msgstr "" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "输入您的电子邮箱来重置您的密码" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "请输入你的电子邮件地址。" -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." msgstr "对不起,你不能在此够重置你的密码,因为您的账号是由其他服务所管理的。" -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "没有找到这个电子邮件地址。" -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 -#: templates/wagtailadmin/pages/_privacy_indicator.html:18 -#, fuzzy -msgid "Public" -msgstr "发布" +#: forms.py:88 +msgid "New title" +msgstr "" -#: forms.py:83 +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +msgid "Copy subpages" +msgstr "" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +msgid "Publish copies" +msgstr "" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "这个唯一的地址已被占用" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: templates/wagtailadmin/pages/_privacy_indicator.html:18 +msgid "Public" +msgstr "" + +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 -#, fuzzy +#: forms.py:139 msgid "This field is required." -msgstr "没有找到这个电子邮件地址。" +msgstr "" #: templates/wagtailadmin/base.html:7 templates/wagtailadmin/home.html:4 msgid "Dashboard" msgstr "仪表板" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "菜单" @@ -104,7 +145,7 @@ msgstr "登录Wagtail" #: templates/wagtailadmin/login.html:46 msgid "Forgotten it?" -msgstr "忘记密码?" +msgstr "忘记了?" #: templates/wagtailadmin/account/account.html:4 #: templates/wagtailadmin/account/account.html:6 @@ -120,9 +161,7 @@ msgid "" "Your avatar image is provided by Gravatar and is connected to your email " "address. With a Gravatar account you can set an avatar for any number of " "other email addresses you use." -msgstr "" -"您的头像图片是由Gravatar提供的,并且关联了您的电子邮箱。一个Gravatar账号可以" -"设置多个电子邮箱的头像图片。" +msgstr "您的头像图片是由Gravatar提供的,并且关联了您的电子邮件地址。一个Gravatar账号可以设置多个电子邮件地址的头像图片。" #: templates/wagtailadmin/account/account.html:25 #: templates/wagtailadmin/account/change_password.html:4 @@ -132,7 +171,7 @@ msgstr "修改密码" #: templates/wagtailadmin/account/account.html:29 msgid "Change the password you use to log in." -msgstr "修改登录密码。" +msgstr "修改您用于登录的密码。" #: templates/wagtailadmin/account/account.html:36 msgid "Notification preferences" @@ -223,12 +262,12 @@ msgstr "电子邮件链接" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "搜索" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "浏览" @@ -287,7 +326,7 @@ msgstr "向下移动" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "删除" @@ -482,9 +521,8 @@ msgid "This page has been made private by a parent page." msgstr "" #: templates/wagtailadmin/page_privacy/ancestor_privacy.html:7 -#, fuzzy msgid "You can edit the privacy settings on:" -msgstr "你可以在此编辑这个页面:" +msgstr "" #: templates/wagtailadmin/page_privacy/set_privacy.html:6 msgid "<b>Note:</b> privacy changes apply to all children of this page too." @@ -494,13 +532,9 @@ msgstr "" #, python-format msgid "" "\n" -" Previewing '%(title)s', submitted by %(submitted_by)s on " -"%(submitted_on)s.\n" -" " -msgstr "" -"\n" -" 预览 '%(title)s', %(submitted_by)s 在 %(submitted_on)s 提交.\n" +" Previewing '%(title)s', submitted by %(submitted_by)s on %(submitted_on)s.\n" " " +msgstr "\n 预览 '%(title)s', %(submitted_by)s 在 %(submitted_on)s 提交.\n " #: templates/wagtailadmin/pages/_privacy_indicator.html:9 msgid "Privacy" @@ -546,8 +580,7 @@ msgid "" " " msgid_plural "" "\n" -" This will also delete %(descendant_count)s more " -"subpages.\n" +" This will also delete %(descendant_count)s more subpages.\n" " " msgstr[0] "" @@ -600,7 +633,7 @@ msgstr "停止发布%(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "停止发布" @@ -616,6 +649,20 @@ msgstr "是的,停止发布" msgid "Pages using" msgstr "页面在用" +#: templates/wagtailadmin/pages/copy.html:3 +#, python-format +msgid "Copy %(title)s" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +msgid "Copy this page" +msgstr "" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -669,7 +716,7 @@ msgid "Exploring %(title)s" msgstr "浏览%(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "添加子页面" @@ -690,53 +737,50 @@ msgstr "开启子页面顺序" msgid "Drag" msgstr "拖动" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "浏览 '%(title)s' 的子页面" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "浏览" -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:245 #, python-format -msgid "Explorer child pages of '%(title)s'" -msgstr "浏览 '%(title)s' 的子页面" +msgid "Explore child pages of '%(title)s'" +msgstr "" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "添加子页面至'%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "添加子页面" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "没有已保存的页面" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "为什么不<a href=\"%(add_page_url)s\">添加一页</a>?" -#: templates/wagtailadmin/pages/list.html:260 -#, fuzzy, python-format +#: templates/wagtailadmin/pages/list.html:263 +#, python-format msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " msgstr "" -"\n" -" 第 %(page_number)s / %(num_pages)s页.\n" -" " -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -746,7 +790,7 @@ msgstr "" msgid "Previous" msgstr "向前" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -767,7 +811,7 @@ msgid "Select a new parent page for <span>%(title)s</span>" msgstr "为<span>%(title)s</span>选择一个新的根页面" #: templates/wagtailadmin/pages/search_results.html:6 -#, fuzzy, python-format +#, python-format msgid "" "\n" " There is one matching page\n" @@ -777,9 +821,6 @@ msgid_plural "" " There are %(counter)s matching pages\n" " " msgstr[0] "" -"\n" -" 第 %(page_number)s / %(num_pages)s页.\n" -" " #: templates/wagtailadmin/pages/search_results.html:16 msgid "Other searches" @@ -804,10 +845,7 @@ msgid "" "\n" " Page %(page_number)s of %(num_pages)s.\n" " " -msgstr "" -"\n" -" 第 %(page_number)s / %(num_pages)s页.\n" -" " +msgstr "\n 第 %(page_number)s / %(num_pages)s页.\n " #: templates/wagtailadmin/pages/search_results.html:54 #, python-format @@ -819,9 +857,8 @@ msgid "Enter a search term above" msgstr "请在上面输入搜索词" #: templates/wagtailadmin/pages/usage_results.html:24 -#, fuzzy msgid "No pages use" -msgstr "页面在用" +msgstr "" #: templates/wagtailadmin/shared/breadcrumb.html:6 msgid "Home" @@ -836,9 +873,8 @@ msgid "February" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:8 -#, fuzzy msgid "March" -msgstr "搜索" +msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:9 msgid "April" @@ -901,9 +937,14 @@ msgid "Fri" msgstr "" #: templates/wagtailadmin/shared/datetimepicker_translations.html:26 -#, fuzzy msgid "Sat" -msgstr "状态" +msgstr "" + +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" @@ -919,9 +960,8 @@ msgid "Page %(page_num)s of %(total_pages)s." msgstr "第%(page_num)s页 共%(total_pages)s页" #: templates/wagtailadmin/userbar/base.html:4 -#, fuzzy msgid "User bar" -msgstr "用户" +msgstr "" #: templates/wagtailadmin/userbar/base.html:14 msgid "Go to Wagtail admin interface" @@ -940,117 +980,69 @@ msgid "Your password has been changed successfully!" msgstr "您的密码已经更改成功。" #: views/account.py:60 -#, fuzzy msgid "Your preferences have been updated successfully!" -msgstr "您的密码已经更改成功。" +msgstr "" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "这个唯一的地址已被占用" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "第 '{0}' 页已发布。" -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "第 '{0}' 页已提交审核。" -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "第 '{0}' 页已创建。" -#: views/pages.py:224 -#, fuzzy +#: views/pages.py:233 msgid "The page could not be created due to validation errors" -msgstr "这页无法保存,因为页面发生验证错误" +msgstr "" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "第 '{0}' 页已更新" -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "这页无法保存,因为页面发生验证错误" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "这页正在等待审核" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "第 '{0}' 页已删除" -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "第 '{0}' 页已停止发布" -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "第 '{0}' 页已移动。" -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +msgid "Page '{0}' and {1} subpages copied." +msgstr "" + +#: views/pages.py:711 +msgid "Page '{0}' copied." +msgstr "" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "第 '{0}' 页当前不需要等待审核。" -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "第 '{0}' 页已被拒绝发布。" - -#~ msgid "Please type a valid time" -#~ msgstr "请输入一个有效的时间" - -#~ msgid "View draft" -#~ msgstr "查看草稿" - -#~ msgid "View live" -#~ msgstr "查看在线版" - -#~ msgid "Status:" -#~ msgstr "状态:" - -#~ msgid "Where do you want to create a %(page_type)s" -#~ msgstr "你想在哪创建 %(page_type)s" - -#~ msgid "Where do you want to create this" -#~ msgstr "你想在哪创建这个" - -#~ msgid "Create a new page" -#~ msgstr "创建一个新页面" - -#~ msgid "" -#~ "Your new page will be saved in the <em>top level</em> of your website. " -#~ "You can move it after saving." -#~ msgstr "你的新页面将会保存到网站的<em>顶级</em> 你 在保存后可以移动." - -#~ msgid "More" -#~ msgstr "更多" - -#~ msgid "Redirects" -#~ msgstr "转向" - -#~ msgid "Editors Picks" -#~ msgstr "编辑手摘" - -#~ msgid "Snippets" -#~ msgstr "片段" - -#~ msgid "" -#~ "Sorry, you do not have access to create a page of type <em>'{0}'</em>." -#~ msgstr "对不起,你没有创建<em>'{0}'</em>类型页面的权限。" - -#~ msgid "" -#~ "Pages of this type can only be created as children of <em>'{0}'</em>. " -#~ "This new page will be saved there." -#~ msgstr "这一类的页面只能创建为<em>'{0}'</em>的子页面。这一页将会保存在那。" - -#~ msgid "The page could not be created due to errors." -#~ msgstr "这一页因有错误发生而无法创建。" diff --git a/wagtail/wagtailadmin/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtailadmin/locale/zh_TW/LC_MESSAGES/django.po index 6dba63056..95b8e929d 100644 --- a/wagtail/wagtailadmin/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtailadmin/locale/zh_TW/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:41+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-05-01 12:09+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" @@ -25,47 +25,94 @@ msgstr "" msgid "Common page configuration" msgstr "一般頁面設定" -#: forms.py:18 +#: forms.py:19 msgid "Search term" msgstr "搜尋關鍵字" -#: forms.py:42 +#: forms.py:43 msgid "Enter your username" msgstr "請輸入您的帳號" -#: forms.py:45 +#: forms.py:46 msgid "Enter password" msgstr "請輸入密碼" -#: forms.py:50 +#: forms.py:51 msgid "Enter your email address to reset your password" msgstr "請輸入您的電子信箱來重新設定密碼" -#: forms.py:59 +#: forms.py:60 msgid "Please fill your email address." msgstr "請輸入您的電子信箱" -#: forms.py:72 +#: forms.py:73 msgid "" "Sorry, you cannot reset your password here as your user account is managed " "by another server." msgstr "對不起,您不能在此重新設定您的密碼,因為您的帳號是由其他伺服器所管理。" -#: forms.py:75 +#: forms.py:76 msgid "This email address is not recognised." msgstr "找不到這個電子信箱。" -#: forms.py:82 templates/wagtailadmin/pages/_privacy_indicator.html:13 +#: forms.py:88 +#, fuzzy +msgid "New title" +msgstr "移動 %(title)s" + +#: forms.py:89 +msgid "New slug" +msgstr "" + +#: forms.py:95 +#, fuzzy +msgid "Copy subpages" +msgstr "新增子頁面" + +#: forms.py:97 +#, python-format +msgid "This will copy %(count)s subpage." +msgid_plural "This will copy %(count)s subpages." +msgstr[0] "" + +#: forms.py:106 +msgid "Publish copied page" +msgstr "" + +#: forms.py:107 +msgid "This page is live. Would you like to publish its copy as well?" +msgstr "" + +#: forms.py:109 +#, fuzzy +msgid "Publish copies" +msgstr "發佈" + +#: forms.py:111 +#, python-format +msgid "" +"%(count)s of the pages being copied is live. Would you like to publish its " +"copy?" +msgid_plural "" +"%(count)s of the pages being copied are live. Would you like to publish " +"their copies?" +msgstr[0] "" + +#: forms.py:124 views/pages.py:155 views/pages.py:272 +msgid "This slug is already in use" +msgstr "這個地址已被使用" + +#: forms.py:130 templates/wagtailadmin/pages/_privacy_indicator.html:13 #: templates/wagtailadmin/pages/_privacy_indicator.html:18 #, fuzzy msgid "Public" msgstr "發佈" -#: forms.py:83 +#: forms.py:131 msgid "Private, accessible with the following password" msgstr "" -#: forms.py:91 +#: forms.py:139 #, fuzzy msgid "This field is required." msgstr "找不到這個電子信箱。" @@ -74,7 +121,7 @@ msgstr "找不到這個電子信箱。" msgid "Dashboard" msgstr "Dashboard" -#: templates/wagtailadmin/base.html:31 +#: templates/wagtailadmin/base.html:27 msgid "Menu" msgstr "選單" @@ -222,12 +269,12 @@ msgstr "電子信箱連結" #: templates/wagtailadmin/chooser/_search_form.html:7 #: templates/wagtailadmin/pages/search.html:3 #: templates/wagtailadmin/pages/search.html:16 -#: templatetags/wagtailadmin_tags.py:35 +#: templatetags/wagtailadmin_tags.py:36 msgid "Search" msgstr "搜尋" #: templates/wagtailadmin/chooser/_search_results.html:3 -#: templatetags/wagtailadmin_tags.py:34 +#: templatetags/wagtailadmin_tags.py:35 msgid "Explorer" msgstr "瀏覽" @@ -291,7 +338,7 @@ msgstr "往下移動" #: templates/wagtailadmin/pages/confirm_delete.html:7 #: templates/wagtailadmin/pages/edit.html:45 #: templates/wagtailadmin/pages/list.html:84 -#: templates/wagtailadmin/pages/list.html:202 +#: templates/wagtailadmin/pages/list.html:205 msgid "Delete" msgstr "刪除" @@ -632,7 +679,7 @@ msgstr "取消發佈 %(title)s" #: templates/wagtailadmin/pages/confirm_unpublish.html:6 #: templates/wagtailadmin/pages/edit.html:42 #: templates/wagtailadmin/pages/list.html:87 -#: templates/wagtailadmin/pages/list.html:205 +#: templates/wagtailadmin/pages/list.html:208 msgid "Unpublish" msgstr "取消發佈" @@ -648,6 +695,21 @@ msgstr "是的,取消發佈" msgid "Pages using" msgstr "頁面正在使用" +#: templates/wagtailadmin/pages/copy.html:3 +#, fuzzy, python-format +msgid "Copy %(title)s" +msgstr "移動 %(title)s" + +#: templates/wagtailadmin/pages/copy.html:6 +#: templates/wagtailadmin/pages/list.html:202 +msgid "Copy" +msgstr "" + +#: templates/wagtailadmin/pages/copy.html:26 +#, fuzzy +msgid "Copy this page" +msgstr "編輯這個頁面" + #: templates/wagtailadmin/pages/create.html:5 #, python-format msgid "New %(page_type)s" @@ -701,7 +763,7 @@ msgid "Exploring %(title)s" msgstr "瀏覽%(title)s" #: templates/wagtailadmin/pages/list.html:90 -#: templates/wagtailadmin/pages/list.html:208 +#: templates/wagtailadmin/pages/list.html:211 msgid "Add child page" msgstr "新增子頁面" @@ -722,42 +784,42 @@ msgstr "開啟子頁面排序" msgid "Drag" msgstr "拖曳" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 #, python-format msgid "Explorer subpages of '%(title)s'" msgstr "瀏覽 '%(title)s' 的子頁面" -#: templates/wagtailadmin/pages/list.html:234 -#: templates/wagtailadmin/pages/list.html:238 -#: templates/wagtailadmin/pages/list.html:242 +#: templates/wagtailadmin/pages/list.html:237 +#: templates/wagtailadmin/pages/list.html:241 +#: templates/wagtailadmin/pages/list.html:245 msgid "Explore" msgstr "瀏覽" -#: templates/wagtailadmin/pages/list.html:242 -#, python-format -msgid "Explorer child pages of '%(title)s'" +#: templates/wagtailadmin/pages/list.html:245 +#, fuzzy, python-format +msgid "Explore child pages of '%(title)s'" msgstr "瀏覽 '%(title)s' 的子頁面" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 #, python-format msgid "Add a child page to '%(title)s'" msgstr "新增子頁面至 '%(title)s'" -#: templates/wagtailadmin/pages/list.html:244 +#: templates/wagtailadmin/pages/list.html:247 msgid "Add subpage" msgstr "新增子頁面" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 msgid "No pages have been created." msgstr "沒有已儲存的頁面" -#: templates/wagtailadmin/pages/list.html:253 +#: templates/wagtailadmin/pages/list.html:256 #, python-format msgid "Why not <a href=\"%(add_page_url)s\">add one</a>?" msgstr "為什麼不 <a href=\"%(add_page_url)s\"> 新增一個頁面呢</a>?" -#: templates/wagtailadmin/pages/list.html:260 +#: templates/wagtailadmin/pages/list.html:263 #, fuzzy, python-format msgid "" "\n" @@ -768,7 +830,7 @@ msgstr "" " 第 %(page_number)s / %(num_pages)s頁。\n" " " -#: templates/wagtailadmin/pages/list.html:266 +#: templates/wagtailadmin/pages/list.html:269 #: templates/wagtailadmin/pages/search_results.html:35 #: templates/wagtailadmin/pages/search_results.html:37 #: templates/wagtailadmin/pages/usage_results.html:13 @@ -778,7 +840,7 @@ msgstr "" msgid "Previous" msgstr "往前" -#: templates/wagtailadmin/pages/list.html:271 +#: templates/wagtailadmin/pages/list.html:274 #: templates/wagtailadmin/pages/search_results.html:44 #: templates/wagtailadmin/pages/search_results.html:46 #: templates/wagtailadmin/pages/usage_results.html:18 @@ -939,6 +1001,12 @@ msgstr "" msgid "Sat" msgstr "狀態" +#: templates/wagtailadmin/shared/header.html:23 +#, python-format +msgid "Used %(useage_count)s time" +msgid_plural "Used %(useage_count)s times" +msgstr[0] "" + #: templates/wagtailadmin/shared/main_nav.html:10 msgid "Account settings" msgstr "帳號設定" @@ -978,64 +1046,70 @@ msgstr "您的密碼已經更改成功。" msgid "Your preferences have been updated successfully!" msgstr "您的密碼已經更改成功。" -#: views/pages.py:146 views/pages.py:263 -msgid "This slug is already in use" -msgstr "這個地址已被使用" - -#: views/pages.py:160 views/pages.py:277 +#: views/pages.py:169 views/pages.py:286 msgid "Go live date/time must be before expiry date/time" msgstr "" -#: views/pages.py:170 views/pages.py:287 +#: views/pages.py:179 views/pages.py:296 msgid "Expiry date/time must be in the future" msgstr "" -#: views/pages.py:210 views/pages.py:334 views/pages.py:707 +#: views/pages.py:219 views/pages.py:351 views/pages.py:791 msgid "Page '{0}' published." msgstr "第 '{0}' 頁已發佈。" -#: views/pages.py:212 views/pages.py:336 +#: views/pages.py:221 views/pages.py:353 msgid "Page '{0}' submitted for moderation." msgstr "第 '{0}' 頁已送審。" -#: views/pages.py:215 +#: views/pages.py:224 msgid "Page '{0}' created." msgstr "第 '{0}' 頁已建立。" -#: views/pages.py:224 +#: views/pages.py:233 #, fuzzy msgid "The page could not be created due to validation errors" msgstr "這頁面因有驗證錯誤而無法儲存。" -#: views/pages.py:339 +#: views/pages.py:356 msgid "Page '{0}' updated." msgstr "第 '{0}' 頁已更新" -#: views/pages.py:348 +#: views/pages.py:365 msgid "The page could not be saved due to validation errors" msgstr "這頁面因有驗證錯誤而無法儲存。" -#: views/pages.py:361 +#: views/pages.py:378 msgid "This page is currently awaiting moderation" msgstr "這頁正等待審核" -#: views/pages.py:381 +#: views/pages.py:409 msgid "Page '{0}' deleted." msgstr "第 '{0}' 頁已刪除" -#: views/pages.py:543 +#: views/pages.py:575 msgid "Page '{0}' unpublished." msgstr "第 '{0}' 頁已取消發佈" -#: views/pages.py:594 +#: views/pages.py:627 msgid "Page '{0}' moved." msgstr "第 '{0}' 頁已移動。" -#: views/pages.py:701 views/pages.py:720 views/pages.py:740 +#: views/pages.py:709 +#, fuzzy +msgid "Page '{0}' and {1} subpages copied." +msgstr "第 '{0}' 頁已更新" + +#: views/pages.py:711 +#, fuzzy +msgid "Page '{0}' copied." +msgstr "第 '{0}' 頁已移動。" + +#: views/pages.py:785 views/pages.py:804 views/pages.py:824 msgid "The page '{0}' is not currently awaiting moderation." msgstr "第 '{0}' 頁目前不需要等待審核。" -#: views/pages.py:726 +#: views/pages.py:810 msgid "Page '{0}' rejected for publication." msgstr "第 '{0}' 頁已被拒絕發佈。" diff --git a/wagtail/wagtailadmin/static/wagtailadmin/js/vendor/jquery.ba-throttle-debounce.min.js b/wagtail/wagtailadmin/static/wagtailadmin/js/vendor/jquery.ba-throttle-debounce.min.js new file mode 100644 index 000000000..07205508e --- /dev/null +++ b/wagtail/wagtailadmin/static/wagtailadmin/js/vendor/jquery.ba-throttle-debounce.min.js @@ -0,0 +1,9 @@ +/* + * jQuery throttle / debounce - v1.1 - 3/7/2010 + * http://benalman.com/projects/jquery-throttle-debounce-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this); \ No newline at end of file diff --git a/wagtail/wagtailadmin/static/wagtailadmin/js/vendor/modernizr-2.6.2.min.js b/wagtail/wagtailadmin/static/wagtailadmin/js/vendor/modernizr-2.6.2.min.js index 7eb2abe75..f18b5c2c9 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/js/vendor/modernizr-2.6.2.min.js +++ b/wagtail/wagtailadmin/static/wagtailadmin/js/vendor/modernizr-2.6.2.min.js @@ -1,4 +1,4 @@ /* Modernizr 2.8.3 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-cssanimations-cssreflections-csstransforms-csstransforms3d-csstransitions-draganddrop-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-file_api-load + * Build: http://modernizr.com/download/#-cssanimations-cssreflections-csstransforms-csstransforms3d-csstransitions-draganddrop-touch-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-file_api-load */ -;window.Modernizr=function(a,b,c){function B(a){j.cssText=a}function C(a,b){return B(m.join(a+";")+(b||""))}function D(a,b){return typeof a===b}function E(a,b){return!!~(""+a).indexOf(b)}function F(a,b){for(var d in a){var e=a[d];if(!E(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function G(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:D(f,"function")?f.bind(d||b):f}return!1}function H(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return D(b,"string")||D(b,"undefined")?F(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),G(e,b,c))}var d="2.8.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return w("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},y=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=D(e[d],"function"),D(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),z={}.hasOwnProperty,A;!D(z,"undefined")&&!D(z.call,"undefined")?A=function(a,b){return z.call(a,b)}:A=function(a,b){return b in a&&D(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},q.cssanimations=function(){return H("animationName")},q.cssreflections=function(){return H("boxReflect")},q.csstransforms=function(){return!!H("transform")},q.csstransforms3d=function(){var a=!!H("perspective");return a&&"webkitPerspective"in g.style&&w("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return H("transition")};for(var I in q)A(q,I)&&(v=I.toLowerCase(),e[v]=q[I](),t.push((e[v]?"":"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)A(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},B(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?o(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.hasCSS=!!l(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||q(a,c),a}var c="3.7.0",d=a.html5||{},e=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g,h="_html5shiv",i=0,j={},k;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.mq=x,e.hasEvent=y,e.testProp=function(a){return F([a])},e.testAllProps=H,e.testStyles=w,e.prefixed=function(a,b,c){return b?H(a,b,c):H(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))},Modernizr.addTest("filereader",function(){return!!(window.File&&window.FileList&&window.FileReader)}); \ No newline at end of file +;window.Modernizr=function(a,b,c){function B(a){j.cssText=a}function C(a,b){return B(m.join(a+";")+(b||""))}function D(a,b){return typeof a===b}function E(a,b){return!!~(""+a).indexOf(b)}function F(a,b){for(var d in a){var e=a[d];if(!E(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function G(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:D(f,"function")?f.bind(d||b):f}return!1}function H(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return D(b,"string")||D(b,"undefined")?F(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),G(e,b,c))}var d="2.8.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return w("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},y=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=D(e[d],"function"),D(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),z={}.hasOwnProperty,A;!D(z,"undefined")&&!D(z.call,"undefined")?A=function(a,b){return z.call(a,b)}:A=function(a,b){return b in a&&D(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:w(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},q.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},q.cssanimations=function(){return H("animationName")},q.cssreflections=function(){return H("boxReflect")},q.csstransforms=function(){return!!H("transform")},q.csstransforms3d=function(){var a=!!H("perspective");return a&&"webkitPerspective"in g.style&&w("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return H("transition")};for(var I in q)A(q,I)&&(v=I.toLowerCase(),e[v]=q[I](),t.push((e[v]?"":"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)A(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},B(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?o(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.hasCSS=!!l(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||q(a,c),a}var c="3.7.0",d=a.html5||{},e=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g,h="_html5shiv",i=0,j={},k;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.mq=x,e.hasEvent=y,e.testProp=function(a){return F([a])},e.testAllProps=H,e.testStyles=w,e.prefixed=function(a,b,c){return b?H(a,b,c):H(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))},Modernizr.addTest("filereader",function(){return!!(window.File&&window.FileList&&window.FileReader)}); \ No newline at end of file diff --git a/wagtail/wagtailadmin/static/wagtailadmin/scss/components/formatters.scss b/wagtail/wagtailadmin/static/wagtailadmin/scss/components/formatters.scss index 3f56db1a1..8f428225a 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/scss/components/formatters.scss +++ b/wagtail/wagtailadmin/static/wagtailadmin/scss/components/formatters.scss @@ -194,19 +194,62 @@ a.tag:hover{ } } +/* Loading mask: overlays a certain area with a loading spinner and a faded out cover to prevent interaction */ +.loading-mask{ + &.loading{ + position:relative; + + &:before, &:after{ + position:absolute; + display:block; + } + + &:before{ + content:""; + top:-5px;left:-5px;bottom:-5px;right:-5px; + z-index:1; + background-color:rgba(255,255,255,0.5); + } + &:after{ + font-size:30px; + width:30px; + line-height:30px; + left:50%; + top:50%; + margin:-15px 0 0 -15px; + font-family:wagtail; + animation: spin 0.5s infinite linear; + -webkit-animation: spin 0.5s infinite linear; + -moz-animation: spin 0.5s infinite linear; + content:"1"; + z-index:2; + color:$color-teal; + } + } +} + + /* general image style */ img{ max-width:100%; height:auto; border: 3px solid $color-grey-4; -} +} /* make a block-level element inline */ .inline{ display:inline; } +.inline-block{ + display:inline-block; +} + +.block{ + display:block; +} + .unlist{ @include unlist(); } diff --git a/wagtail/wagtailadmin/static/wagtailadmin/scss/components/forms.scss b/wagtail/wagtailadmin/static/wagtailadmin/scss/components/forms.scss index 0f9328e65..534e4ec8d 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/scss/components/forms.scss +++ b/wagtail/wagtailadmin/static/wagtailadmin/scss/components/forms.scss @@ -72,6 +72,7 @@ input, textarea, select, .richtext, .tagit{ &:disabled, &[disabled], &:disabled:hover, &[disabled]:hover{ background-color:inherit; cursor:not-allowed; + color:$color-grey-4; } } @@ -533,6 +534,7 @@ li.focused > .help{ .field-row{ @include clearfix(); + /* negative margin the bottom so it doesn't add too much space */ margin-bottom:-1.2em; } @@ -839,14 +841,31 @@ input[type=submit], input[type=reset], input[type=button], .button, button{ @include row(); } + .field-content{ + @include column(10,0); + } + .field-col{ float:left; padding-left:0 !important; - } - .field-content{ - @include column(10); - padding-right:0; - padding-left:0; - } + /* anything less than 4 columns or greater than 6 is impractical */ + &.col4{ + label{ + @include column(2,0,4); + } + .field-content{ + @include column(2, $padding, 4); + } + } + &.col6{ + label{ + @include column(2,0,6); + } + .field-content{ + @include column(4, $padding, 6); + } + } + } + } \ No newline at end of file diff --git a/wagtail/wagtailadmin/static/wagtailadmin/scss/components/typography.scss b/wagtail/wagtailadmin/static/wagtailadmin/scss/components/typography.scss index 9a77c764e..059392aaf 100644 --- a/wagtail/wagtailadmin/static/wagtailadmin/scss/components/typography.scss +++ b/wagtail/wagtailadmin/static/wagtailadmin/scss/components/typography.scss @@ -58,6 +58,7 @@ kbd{ .help-block{ padding:1em; margin:1em 0; + clear:both; p{ margin-top:0; diff --git a/wagtail/wagtailadmin/taggable.py b/wagtail/wagtailadmin/taggable.py index 3b7de479c..ce8698231 100644 --- a/wagtail/wagtailadmin/taggable.py +++ b/wagtail/wagtailadmin/taggable.py @@ -4,19 +4,19 @@ from django.contrib.contenttypes.models import ContentType from django.db.models import Count from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger -from wagtail.wagtailsearch import indexed +from wagtail.wagtailsearch import index from wagtail.wagtailsearch.backends import get_search_backend -class TagSearchable(indexed.Indexed): +class TagSearchable(index.Indexed): """ Mixin to provide a 'search' method, searching on the 'title' field and tags, for models that provide those things. """ search_fields = ( - indexed.SearchField('title', partial_match=True, boost=10), - indexed.SearchField('get_tags', partial_match=True, boost=10) + index.SearchField('title', partial_match=True, boost=10), + index.SearchField('get_tags', partial_match=True, boost=10) ) @property diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/page_privacy/set_privacy.html b/wagtail/wagtailadmin/templates/wagtailadmin/page_privacy/set_privacy.html index 6298d6f5f..263908a26 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/page_privacy/set_privacy.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/page_privacy/set_privacy.html @@ -3,7 +3,7 @@ {% include "wagtailadmin/shared/header.html" with title=title_str icon="locked" %} <div class="nice-padding"> - <p>{% trans "<b>Note:</b> privacy changes apply to all children of this page too." %}</p> + <p class="help-block help-warning">{% trans "Privacy changes apply to all children of this page too." %}</p> <form action="{% url 'wagtailadmin_pages_set_privacy' page.id %}" method="POST"> {% csrf_token %} <ul class="fields"> diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/pages/copy.html b/wagtail/wagtailadmin/templates/wagtailadmin/pages/copy.html new file mode 100644 index 000000000..1a645c16f --- /dev/null +++ b/wagtail/wagtailadmin/templates/wagtailadmin/pages/copy.html @@ -0,0 +1,29 @@ +{% extends "wagtailadmin/base.html" %} +{% load i18n %} +{% block titletag %}{% blocktrans with title=page.title %}Copy {{ title }}{% endblocktrans %}{% endblock %} +{% block bodyclass %}menu-explorer{% endblock %} +{% block content %} + {% trans "Copy" as copy_str %} + {% include "wagtailadmin/shared/header.html" with title=copy_str subtitle=page.title icon="doc-empty-inverse" %} + + <div class="nice-padding"> + <form action="{% url 'wagtailadmin_pages_copy' page.id %}" method="POST"> + {% csrf_token %} + + <ul class="fields"> + {% include "wagtailadmin/shared/field_as_li.html" with field=form.new_title %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.new_slug %} + + {% if form.copy_subpages %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.copy_subpages %} + {% endif %} + + {% if form.publish_copies %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.publish_copies %} + {% endif %} + </ul> + + <input type="submit" value="{% trans 'Copy this page' %}"> + </form> + </div> +{% endblock %} diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/pages/list.html b/wagtail/wagtailadmin/templates/wagtailadmin/pages/list.html index 07d9e0691..698aadeb8 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/pages/list.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/pages/list.html @@ -198,6 +198,9 @@ {% if page_perms.can_move and 'move' not in hide_actions|default:'' %} <li><a href="{% url 'wagtailadmin_pages_move' page.id %}" class="button button-small">{% trans 'Move' %}</a></li> {% endif %} + {% if parent_page_perms.can_add_subpage and 'copy' not in hide_actions|default:'' %} + <li><a href="{% url 'wagtailadmin_pages_copy' page.id %}" class="button button-small">{% trans 'Copy' %}</a></li> + {% endif %} {% if page_perms.can_delete and 'delete' not in hide_actions|default:'' %} <li><a href="{% url 'wagtailadmin_pages_delete' page.id %}" class="button button-small">{% trans 'Delete' %}</a></li> {% endif %} diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/shared/header.html b/wagtail/wagtailadmin/templates/wagtailadmin/shared/header.html index be391989d..fa790960d 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/shared/header.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/shared/header.html @@ -1,3 +1,4 @@ +{% load i18n wagtailadmin_tags %} <header class="nice-padding {% if merged %}merged{% endif %} {% if tabbed %}tab-merged{% endif %} {% if search_form %}hasform{% endif %}"> <div class="row"> <div class="left"> @@ -16,6 +17,12 @@ {% endif %} </div> <div class="right"> + {% usage_count_enabled as uc_enabled %} + {% if uc_enabled and usage_object %} + <div class="usagecount"> + <a href="{{ usage_object.usage_url }}">{% blocktrans count useage_count=usage_object.get_usage.count %}Used {{ useage_count }} time{% plural %}Used {{ useage_count }} times{% endblocktrans %}</a> + </div> + {% endif %} {% if add_link %} <div class="addbutton"> <a href="{% url add_link %}" class="button bicolor icon icon-plus">{{ add_text }}</a> @@ -23,4 +30,4 @@ {% endif %} </div> </div> -</header> \ No newline at end of file +</header> diff --git a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py index 30d9fcc39..a08211591 100644 --- a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py +++ b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py @@ -1,5 +1,6 @@ from __future__ import unicode_literals +from django.conf import settings from django import template from django.core import urlresolvers from django.utils.translation import ugettext_lazy as _ @@ -121,3 +122,8 @@ def hook_output(hook_name): """ snippets = [fn() for fn in hooks.get_hooks(hook_name)] return ''.join(snippets) + + +@register.assignment_tag +def usage_count_enabled(): + return getattr(settings, 'WAGTAIL_USAGE_COUNT_ENABLED', False) diff --git a/wagtail/wagtailadmin/tests/test_pages_views.py b/wagtail/wagtailadmin/tests/test_pages_views.py index 90f757ad2..765c21786 100644 --- a/wagtail/wagtailadmin/tests/test_pages_views.py +++ b/wagtail/wagtailadmin/tests/test_pages_views.py @@ -3,7 +3,7 @@ from datetime import timedelta from django.test import TestCase from django.core.urlresolvers import reverse from django.contrib.auth import get_user_model -from django.contrib.auth.models import Permission +from django.contrib.auth.models import Group, Permission from django.core import mail from django.core.paginator import Paginator from django.utils import timezone @@ -954,6 +954,260 @@ class TestPageMove(TestCase, WagtailTestUtils): self.assertEqual(response.status_code, 200) +class TestPageCopy(TestCase, WagtailTestUtils): + def setUp(self): + # Find root page + self.root_page = Page.objects.get(id=2) + + # Create a page + self.test_page = self.root_page.add_child(instance=SimplePage( + title="Hello world!", + slug='hello-world', + live=True, + )) + + # Create a couple of child pages + self.test_child_page = self.test_page.add_child(instance=SimplePage( + title="Child page", + slug='child-page', + live=True, + )) + + self.test_unpublished_child_page = self.test_page.add_child(instance=SimplePage( + title="Unpublished Child page", + slug='unpublished-child-page', + live=False, + )) + + # Login + self.user = self.login() + + def test_page_copy(self): + response = self.client.get(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, ))) + + # Check response + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'wagtailadmin/pages/copy.html') + + # Make sure all fields are in the form + self.assertContains(response, "New title") + self.assertContains(response, "New slug") + self.assertContains(response, "Copy subpages") + self.assertContains(response, "Publish copies") + + def test_page_copy_bad_permissions(self): + # Remove privileges from user + self.user.is_superuser = False + self.user.user_permissions.add( + Permission.objects.get(content_type__app_label='wagtailadmin', codename='access_admin') + ) + self.user.save() + + # Get copy page + response = self.client.get(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, ))) + + # Check that the user recieved a 403 response + self.assertEqual(response.status_code, 403) + + def test_page_copy_post(self): + post_data = { + 'new_title': "Hello world 2", + 'new_slug': 'hello-world-2', + 'copy_subpages': False, + 'publish_copies': False, + } + response = self.client.post(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, )), post_data) + + # Check that the user was redirected to the parents explore page + self.assertRedirects(response, reverse('wagtailadmin_explore', args=(self.root_page.id, ))) + + # Get copy + page_copy = self.root_page.get_children().filter(slug='hello-world-2').first() + + # Check that the copy exists + self.assertNotEqual(page_copy, None) + + # Check that the copy is not live + self.assertFalse(page_copy.live) + + # Check that the owner of the page is set correctly + self.assertEqual(page_copy.owner, self.user) + + # Check that the children were not copied + self.assertEqual(page_copy.get_children().count(), 0) + + def test_page_copy_post_copy_subpages(self): + post_data = { + 'new_title': "Hello world 2", + 'new_slug': 'hello-world-2', + 'copy_subpages': True, + 'publish_copies': False, + } + response = self.client.post(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, )), post_data) + + # Check that the user was redirected to the parents explore page + self.assertRedirects(response, reverse('wagtailadmin_explore', args=(self.root_page.id, ))) + + # Get copy + page_copy = self.root_page.get_children().filter(slug='hello-world-2').first() + + # Check that the copy exists + self.assertNotEqual(page_copy, None) + + # Check that the copy is not live + self.assertFalse(page_copy.live) + + # Check that the owner of the page is set correctly + self.assertEqual(page_copy.owner, self.user) + + # Check that the children were copied + self.assertEqual(page_copy.get_children().count(), 2) + + # Check the the child pages + # Neither of them should be live + child_copy = page_copy.get_children().filter(slug='child-page').first() + self.assertNotEqual(child_copy, None) + self.assertFalse(child_copy.live) + + unpublished_child_copy = page_copy.get_children().filter(slug='unpublished-child-page').first() + self.assertNotEqual(unpublished_child_copy, None) + self.assertFalse(unpublished_child_copy.live) + + def test_page_copy_post_copy_subpages_publish_copies(self): + post_data = { + 'new_title': "Hello world 2", + 'new_slug': 'hello-world-2', + 'copy_subpages': True, + 'publish_copies': True, + } + response = self.client.post(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, )), post_data) + + # Check that the user was redirected to the parents explore page + self.assertRedirects(response, reverse('wagtailadmin_explore', args=(self.root_page.id, ))) + + # Get copy + page_copy = self.root_page.get_children().filter(slug='hello-world-2').first() + + # Check that the copy exists + self.assertNotEqual(page_copy, None) + + # Check that the copy is live + self.assertTrue(page_copy.live) + + # Check that the owner of the page is set correctly + self.assertEqual(page_copy.owner, self.user) + + # Check that the children were copied + self.assertEqual(page_copy.get_children().count(), 2) + + # Check the the child pages + # The child_copy should be live but the unpublished_child_copy shouldn't + child_copy = page_copy.get_children().filter(slug='child-page').first() + self.assertNotEqual(child_copy, None) + self.assertTrue(child_copy.live) + + unpublished_child_copy = page_copy.get_children().filter(slug='unpublished-child-page').first() + self.assertNotEqual(unpublished_child_copy, None) + self.assertFalse(unpublished_child_copy.live) + + def test_page_copy_post_existing_slug(self): + # This tests the existing slug checking on page copy + + # Attempt to copy the page but forget to change the slug + post_data = { + 'new_title': "Hello world 2", + 'new_slug': 'hello-world', + 'copy_subpages': False, + } + response = self.client.post(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, )), post_data) + + # Should not be redirected (as the save should fail) + self.assertEqual(response.status_code, 200) + + # Check that a form error was raised + self.assertFormError(response, 'form', 'new_slug', "This slug is already in use") + + def test_page_copy_post_invalid_slug(self): + # Attempt to copy the page but set an invalid slug string + post_data = { + 'new_title': "Hello world 2", + 'new_slug': 'hello world!', + 'copy_subpages': False, + } + response = self.client.post(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, )), post_data) + + # Should not be redirected (as the save should fail) + self.assertEqual(response.status_code, 200) + + # Check that a form error was raised + self.assertFormError(response, 'form', 'new_slug', "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.") + + def test_page_copy_no_publish_permission(self): + # Turn user into an editor who can add pages but not publish them + self.user.is_superuser = False + self.user.groups.add( + Group.objects.get(name="Editors"), + ) + self.user.save() + + # Get copy page + response = self.client.get(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, ))) + + # The user should have access to the copy page + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'wagtailadmin/pages/copy.html') + + # Make sure the "publish copies" field is hidden + self.assertNotContains(response, "Publish copies") + + def test_page_copy_no_publish_permission_post_copy_subpages_publish_copies(self): + # This tests that unprivileged users cannot publish copied pages even if they hack their browser + + # Turn user into an editor who can add pages but not publish them + self.user.is_superuser = False + self.user.groups.add( + Group.objects.get(name="Editors"), + ) + self.user.save() + + # Post + post_data = { + 'new_title': "Hello world 2", + 'new_slug': 'hello-world-2', + 'copy_subpages': True, + 'publish_copies': True, + } + response = self.client.post(reverse('wagtailadmin_pages_copy', args=(self.test_page.id, )), post_data) + + # Check that the user was redirected to the parents explore page + self.assertRedirects(response, reverse('wagtailadmin_explore', args=(self.root_page.id, ))) + + # Get copy + page_copy = self.root_page.get_children().filter(slug='hello-world-2').first() + + # Check that the copy exists + self.assertNotEqual(page_copy, None) + + # Check that the copy is not live + self.assertFalse(page_copy.live) + + # Check that the owner of the page is set correctly + self.assertEqual(page_copy.owner, self.user) + + # Check that the children were copied + self.assertEqual(page_copy.get_children().count(), 2) + + # Check the the child pages + # Neither of them should be live + child_copy = page_copy.get_children().filter(slug='child-page').first() + self.assertNotEqual(child_copy, None) + self.assertFalse(child_copy.live) + + unpublished_child_copy = page_copy.get_children().filter(slug='unpublished-child-page').first() + self.assertNotEqual(unpublished_child_copy, None) + self.assertFalse(unpublished_child_copy.live) + + class TestPageUnpublish(TestCase, WagtailTestUtils): def setUp(self): self.user = self.login() diff --git a/wagtail/wagtailadmin/tests/tests.py b/wagtail/wagtailadmin/tests/tests.py index bc8362b46..427fd3279 100644 --- a/wagtail/wagtailadmin/tests/tests.py +++ b/wagtail/wagtailadmin/tests/tests.py @@ -1,9 +1,10 @@ from django.test import TestCase +from django.core.urlresolvers import reverse +from django.core import mail + from wagtail.tests.utils import WagtailTestUtils from wagtail.wagtailcore.models import Page from wagtail.wagtailadmin.tasks import send_email_task -from django.core.urlresolvers import reverse -from django.core import mail class TestHome(TestCase, WagtailTestUtils): diff --git a/wagtail/wagtailadmin/urls.py b/wagtail/wagtailadmin/urls.py index 708601925..72833130e 100644 --- a/wagtail/wagtailadmin/urls.py +++ b/wagtail/wagtailadmin/urls.py @@ -65,6 +65,8 @@ urlpatterns += [ url(r'^pages/(\d+)/move/(\d+)/confirm/$', pages.move_confirm, name='wagtailadmin_pages_move_confirm'), url(r'^pages/(\d+)/set_position/$', pages.set_page_position, name='wagtailadmin_pages_set_page_position'), + url(r'^pages/(\d+)/copy/$', pages.copy, name='wagtailadmin_pages_copy'), + url(r'^pages/moderation/(\d+)/approve/$', pages.approve_moderation, name='wagtailadmin_pages_approve_moderation'), url(r'^pages/moderation/(\d+)/reject/$', pages.reject_moderation, name='wagtailadmin_pages_reject_moderation'), url(r'^pages/moderation/(\d+)/preview/$', pages.preview_for_moderation, name='wagtailadmin_pages_preview_for_moderation'), diff --git a/wagtail/wagtailadmin/utils.py b/wagtail/wagtailadmin/utils.py new file mode 100644 index 000000000..043b8336d --- /dev/null +++ b/wagtail/wagtailadmin/utils.py @@ -0,0 +1,36 @@ +from modelcluster.fields import ParentalKey + +from wagtail.wagtailcore.models import Page + + +def get_object_usage(obj): + "Returns a queryset of pages that link to a particular object" + + pages = Page.objects.none() + + # get all the relation objects for obj + relations = type(obj)._meta.get_all_related_objects( + include_hidden=True, + include_proxy_eq=True + ) + for relation in relations: + # if the relation is between obj and a page, get the page + if issubclass(relation.model, Page): + pages |= Page.objects.filter( + id__in=relation.model._base_manager.filter(**{ + relation.field.name: obj.id + }).values_list('id', flat=True) + ) + else: + # if the relation is between obj and an object that has a page as a + # property, return the page + for f in relation.model._meta.fields: + if isinstance(f, ParentalKey) and issubclass(f.rel.to, Page): + pages |= Page.objects.filter( + id__in=relation.model._base_manager.filter( + **{ + relation.field.name: obj.id + }).values_list(f.attname, flat=True) + ) + + return pages diff --git a/wagtail/wagtailadmin/views/pages.py b/wagtail/wagtailadmin/views/pages.py index 221dd8940..3de6f7cb5 100644 --- a/wagtail/wagtailadmin/views/pages.py +++ b/wagtail/wagtailadmin/views/pages.py @@ -15,7 +15,7 @@ from django.views.decorators.vary import vary_on_headers from wagtail.utils.deprecation import RemovedInWagtail06Warning from wagtail.wagtailadmin.edit_handlers import TabbedInterface, ObjectList -from wagtail.wagtailadmin.forms import SearchForm +from wagtail.wagtailadmin.forms import SearchForm, CopyForm from wagtail.wagtailadmin import tasks, signals from wagtail.wagtailcore import hooks @@ -668,6 +668,57 @@ def set_page_position(request, page_to_move_id): return HttpResponse('') +@permission_required('wagtailadmin.access_admin') +def copy(request, page_id): + page = Page.objects.get(id=page_id) + parent_page = page.get_parent() + + # Make sure this user has permission to add subpages on the parent + if not parent_page.permissions_for_user(request.user).can_add_subpage(): + raise PermissionDenied + + # Check if the user has permission to publish subpages on the parent + can_publish = parent_page.permissions_for_user(request.user).can_publish_subpage() + + # Create the form + form = CopyForm(request.POST or None, page=page, can_publish=can_publish) + + # Check if user is submitting + if request.method == 'POST' and form.is_valid(): + # Copy the page + new_page = page.copy( + recursive=form.cleaned_data.get('copy_subpages'), + update_attrs={ + 'title': form.cleaned_data['new_title'], + 'slug': form.cleaned_data['new_slug'], + } + ) + + # Check if we should keep copied subpages published + publish_copies = can_publish and form.cleaned_data.get('publish_copies') + + # Unpublish copied pages if we need to + if not publish_copies: + new_page.get_descendants(inclusive=True).update(live=False) + + # Assign user of this request as the owner of all the new pages + new_page.get_descendants(inclusive=True).update(owner=request.user) + + # Give a success message back to the user + if form.cleaned_data.get('copy_subpages'): + messages.success(request, _("Page '{0}' and {1} subpages copied.").format(page.title, new_page.get_descendants().count())) + else: + messages.success(request, _("Page '{0}' copied.").format(page.title)) + + # Redirect to explore of parent page + return redirect('wagtailadmin_explore', parent_page.id) + + return render(request, 'wagtailadmin/pages/copy.html', { + 'page': page, + 'form': form, + }) + + PAGE_EDIT_HANDLERS = {} diff --git a/wagtail/wagtailcore/locale/bg/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/bg/LC_MESSAGES/django.mo index d43d58490..4b01bf043 100644 Binary files a/wagtail/wagtailcore/locale/bg/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/bg/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/bg/LC_MESSAGES/django.po index 46c88a279..3d3cfb9bb 100644 --- a/wagtail/wagtailcore/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/bg/LC_MESSAGES/django.po @@ -1,92 +1,80 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# LyuboslavPetrov <petrov.lyuboslav@gmail.com>, 2014 +# Lyuboslav Petrov <petrov.lyuboslav@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-24 20:02+0000\n" -"Last-Translator: LyuboslavPetrov <petrov.lyuboslav@gmail.com>\n" -"Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" -"language/bg/)\n" -"Language: bg\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/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" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Задайте това като нещо различно от 80, в случай че имате нужда от определен " -"порт да се появи в URL адресите ви (напр. код-разработка на порт 8000). Не " -"се отнася за боравене със заявки (така Port Forwarding ще работи)." +msgstr "Задайте това като нещо различно от 80, в случай че имате нужда от определен порт да се появи в URL адресите ви (напр. код-разработка на порт 8000). Не се отнася за боравене със заявки (така Port Forwarding ще работи)." -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"Ако е Вярно, този сайт ще борави със заявки за всички останали хостове, " -"които нямат собствен сайт." +msgstr "Ако е Вярно, този сайт ще борави със заявки за всички останали хостове, които нямат собствен сайт." -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "Заглавието на страницата както желаете да се вижда" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"Името на страницата както ще изглежда в URL-ите. Например http://domain.com/" -"blog/[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "Името на страницата както ще изглежда в URL-ите. Например http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Заглавие на Страница" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." -msgstr "" -"Незадължителен. 'Оптимизирано за Търсачки' заглавие. Това ще се появи най-" -"отгоре на браузър прозореца." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." +msgstr "Незадължителен. 'Оптимизирано за Търсачки' заглавие. Това ще се появи най-отгоре на браузър прозореца." -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" -msgstr "" -"Дали линк към тази страница ще се появи в автоматично генерираните менюта" +msgstr "Дали линк към тази страница ще се появи в автоматично генерираните менюта" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "име '%s' (ползвано в листа subpage_types) не е зададено." +msgstr "" diff --git a/wagtail/wagtailcore/locale/ca/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/ca/LC_MESSAGES/django.mo index 82c6ba24c..7ed9969c9 100644 Binary files a/wagtail/wagtailcore/locale/ca/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/ca/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/ca/LC_MESSAGES/django.po index c7bf0cc19..aa3525fd6 100644 --- a/wagtail/wagtailcore/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/ca/LC_MESSAGES/django.po @@ -1,92 +1,80 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# Lloople <d.lloople@gmail.com>, 2014 +# David Llop <d.lloople@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-22 12:43+0000\n" -"Last-Translator: Lloople <d.lloople@gmail.com>\n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" -"ca/)\n" -"Language: ca\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/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" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Canvia això per un número diferent de 80 si necessites que aparegui un port " -"específic en les URLs (per ex: port de desenvolupament al 8000). No afecta a " -"la petició actual (el port de reenviament encara funciona)." +msgstr "Canvia això per un número diferent de 80 si necessites que aparegui un port específic en les URLs (per ex: port de desenvolupament al 8000). No afecta a la petició actual (el port de reenviament encara funciona)." -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"Si és cert, aquest lloc s'encarregarà de les peticions de totes les altres " -"màquines que no tenen un lloc establert." +msgstr "Si és cert, aquest lloc s'encarregarà de les peticions de totes les altres màquines que no tenen un lloc establert." -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "El títol de la pàgina que vols que sigui vist pel públic" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"El nom de la pàgina que apareixerà en la URL. Per exemple: http://domini.com/" -"blog/[nom]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "El nom de la pàgina que apareixerà en la URL. Per exemple: http://domini.com/blog/[nom]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Títol de la pàgina" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." -msgstr "" -"Opcional. Títol de 'Motor de cerca amigable'. Això apareixerà al cap damunt " -"de la finetra del navegador" +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." +msgstr "Opcional. Títol de 'Motor de cerca amigable'. Això apareixerà al cap damunt de la finetra del navegador" -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" -msgstr "" -"Si s'enllaça cap aquesta pàgina apareixerà automàticament als menús generats" +msgstr "Si s'enllaça cap aquesta pàgina apareixerà automàticament als menús generats" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "el nom '%s' (utilitzat a subpage_types list) no està definit." +msgstr "" diff --git a/wagtail/wagtailcore/locale/de/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/de/LC_MESSAGES/django.mo index c87c111c3..d31c17891 100644 Binary files a/wagtail/wagtailcore/locale/de/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/de/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/de/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/de/LC_MESSAGES/django.po index e83f6f119..543a13b5b 100644 --- a/wagtail/wagtailcore/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/de/LC_MESSAGES/django.po @@ -1,94 +1,80 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# jspielmann <j@spielmannsolutions.com>, 2014 +# Johannes Spielmann <j@spielmannsolutions.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-25 17:28+0000\n" -"Last-Translator: jspielmann <j@spielmannsolutions.com>\n" -"Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" -"de/)\n" -"Language: de\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: German (http://www.transifex.com/projects/p/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" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Geben Sie hier einen anderen Wert als 80 ein, wenn dieser in URLs auftauchen " -"soll (z.B. Development Port auf 8000). Dies bezieht sich nicht auf Request " -"Handling, so dass Port Forwarding weiterhin funktioniert." +msgstr "Geben Sie hier einen anderen Wert als 80 ein, wenn dieser in URLs auftauchen soll (z.B. Development Port auf 8000). Dies bezieht sich nicht auf Request Handling, so dass Port Forwarding weiterhin funktioniert." -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"Falls ausgewählt wird diese Seite Anfragen für alle Hostnamen annehmen, die " -"keinen eigenen Seiteneintrag haben." +msgstr "Falls ausgewählt wird diese Seite Anfragen für alle Hostnamen annehmen, die keinen eigenen Seiteneintrag haben." -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "Der Seitentitel, der öffentlich angezeigt werden soll" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"Der Name der Seite, wie er in URLs angezeigt werden soll, z.B. http://domain." -"com/blog/[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "Der Name der Seite, wie er in URLs angezeigt werden soll, z.B. http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Seitentitel" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." -msgstr "" -"Optional. Suchmaschinenfreundlicher Titel. Wird in der Titelleiste des " -"Browsers angezeigt." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." +msgstr "Optional. Suchmaschinenfreundlicher Titel. Wird in der Titelleiste des Browsers angezeigt." -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" -msgstr "" -"Ob ein Link zu dieser Seite in automatisch generierten Menüs auftaucht." +msgstr "Ob ein Link zu dieser Seite in automatisch generierten Menüs auftaucht." -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." msgstr "" -"Der Name '%s', der in der Liste subpage_types verwendet wird, ist nicht " -"definiert." diff --git a/wagtail/wagtailcore/locale/el/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/el/LC_MESSAGES/django.mo index a934f69b6..100a28cc1 100644 Binary files a/wagtail/wagtailcore/locale/el/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/el/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/el/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/el/LC_MESSAGES/django.po index 0ac591453..bed0ba05d 100644 --- a/wagtail/wagtailcore/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/el/LC_MESSAGES/django.po @@ -1,94 +1,80 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # serafeim <serafeim@torchbox.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-22 12:27+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" -"el/)\n" -"Language: el\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Greek (http://www.transifex.com/projects/p/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" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Μπορείτε να χρησιμοποιήσετε κάτι διαφορετικό από το 80 αν θέλετε να " -"εμφανίζεται στις διευθύνσεις μια συγκεκριμένη θύρα (π.χ. ανάπτυξη στη θύρα " -"8000). Δεν επηρεάζει τον τρόπο που χειρίζονται τις αιτήσεις (οπότε η " -"προώθηση θύρας δουλεύει ακόμα)" +msgstr "Μπορείτε να χρησιμοποιήσετε κάτι διαφορετικό από το 80 αν θέλετε να εμφανίζεται στις διευθύνσεις μια συγκεκριμένη θύρα (π.χ. ανάπτυξη στη θύρα 8000). Δεν επηρεάζει τον τρόπο που χειρίζονται τις αιτήσεις (οπότε η προώθηση θύρας δουλεύει ακόμα)" -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"Αν είναι αληθές, το εν λόγω site θα χειρίζεται και τις αιτήσεις για όλα τα " -"άλλα ονόματα που δεν έχουν δική τους εγγραφή" +msgstr "Αν είναι αληθές, το εν λόγω site θα χειρίζεται και τις αιτήσεις για όλα τα άλλα ονόματα που δεν έχουν δική τους εγγραφή" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "Ο τίτλος της σελίδας έτσι όπως θα εμφανίζεται στο κοινό" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"Το όνομα της σελίδας έτσι όπως θα εμφανίζεται στις διευθύνσεις, π.χ http://" -"domain.com/blog/[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "Το όνομα της σελίδας έτσι όπως θα εμφανίζεται στις διευθύνσεις, π.χ http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Τίτλος σελίδας" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." -msgstr "" -"Προαιρετικό. Τίτλος που είναι 'φιλικός προς τις μηχανές αναζήτησης'. Θα " -"εμφανιστεί στην κορυφή του παραθύρου." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." +msgstr "Προαιρετικό. Τίτλος που είναι 'φιλικός προς τις μηχανές αναζήτησης'. Θα εμφανιστεί στην κορυφή του παραθύρου." -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" -msgstr "" -"Επιλέξτε αν μια σύνδεση σε αυτή τη σελίδα θα εμφανιστεί στα μενού που " -"δημιουργούνται αυτόματα" +msgstr "Επιλέξτε αν μια σύνδεση σε αυτή τη σελίδα θα εμφανιστεί στα μενού που δημιουργούνται αυτόματα" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "το όνομα '%s' (που χρησιμοποιείται στη λίστα) δεν έχει οριστεί." +msgstr "" diff --git a/wagtail/wagtailcore/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/en/LC_MESSAGES/django.mo index 4b726f7d6..3b83aafe9 100644 Binary files a/wagtail/wagtailcore/locale/en/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/en/LC_MESSAGES/django.po index 7d99eb3e3..c4bf27524 100644 --- a/wagtail/wagtailcore/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,63 +17,63 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." msgstr "" -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" msgstr "" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "" -#: models.py:276 +#: models.py:278 msgid "" "The name of the page as it will appear in URLs e.g http://domain.com/blog/" "[my-slug]/" msgstr "" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "" -#: models.py:285 +#: models.py:287 msgid "" "Optional. 'Search Engine Friendly' title. This will appear at the top of the " "browser window." msgstr "" -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" msgstr "" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." msgstr "" diff --git a/wagtail/wagtailcore/locale/es/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/es/LC_MESSAGES/django.mo index af0f4cf48..9ab7329f7 100644 Binary files a/wagtail/wagtailcore/locale/es/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/es/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/es/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/es/LC_MESSAGES/django.po index 00c9c6719..05bc60286 100644 --- a/wagtail/wagtailcore/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/es/LC_MESSAGES/django.po @@ -1,95 +1,84 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 -# unaizalakain <unai@gisa-elkartea.org>, 2014 -# unaizalakain <unai@gisa-elkartea.org>, 2014 +# Unai Zalakain <unai@gisa-elkartea.org>, 2014 +# Unai Zalakain <unai@gisa-elkartea.org>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-27 09:22+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" -"es/)\n" -"Language: es\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/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=2; plural=(n != 1);\n" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Cambia esto a algo que no sea 80 si necesitas que un puerto específico " -"aparezca en las URLs (p.e. desarrollo en el puerto 8000). Esto no afecta al " -"manejo de solicitudes (así que la redirección de puertos sigue funcionando)." +msgstr "Cambia esto a algo que no sea 80 si necesitas que un puerto específico aparezca en las URLs (p.e. desarrollo en el puerto 8000). Esto no afecta al manejo de solicitudes (así que la redirección de puertos sigue funcionando)." -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"Si afirmativo, este sitio manejará solicitudes para todos los demás " -"hostnames que no tengan un site por sí mismos" +msgstr "Si afirmativo, este sitio manejará solicitudes para todos los demás hostnames que no tengan un site por sí mismos" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "El título de la página como quieres que sea visto por el público" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"El nombre de la página tal como aparecerá en URLs p.ej. http://domain.com/" -"blog/[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "El nombre de la página tal como aparecerá en URLs p.ej. http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Título de la página" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." -msgstr "" -"Opcional. Título 'Amigable para el Motor de Búsqueda'. Aparecerá en la parte " -"superior de la ventana del navegador." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." +msgstr "Opcional. Título 'Amigable para el Motor de Búsqueda'. Aparecerá en la parte superior de la ventana del navegador." -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" msgstr "Un enlace a esta página aparecerá en menús generados automáticamente" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "nombre '%s' (usado en la lista de subpage_types) no está definido." +msgstr "" diff --git a/wagtail/wagtailcore/locale/eu/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/eu/LC_MESSAGES/django.mo index cf12d44d2..972e8348c 100644 Binary files a/wagtail/wagtailcore/locale/eu/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/eu/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/eu/LC_MESSAGES/django.po index d5ed41484..cbe69e338 100644 --- a/wagtail/wagtailcore/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/eu/LC_MESSAGES/django.po @@ -1,80 +1,79 @@ # 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: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-24 22:36+0000\n" -"Last-Translator: tomdyson <tom@torchbox.com>\n" -"Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" -"eu/)\n" -"Language: eu\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Basque (http://www.transifex.com/projects/p/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" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." msgstr "" -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" msgstr "" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" msgstr "" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." msgstr "" -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" msgstr "" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." msgstr "" diff --git a/wagtail/wagtailcore/locale/fr/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/fr/LC_MESSAGES/django.mo index 8f9bf6860..0ceed37cd 100644 Binary files a/wagtail/wagtailcore/locale/fr/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/fr/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/fr/LC_MESSAGES/django.po index 0ef2ab822..cc75fb902 100644 --- a/wagtail/wagtailcore/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/fr/LC_MESSAGES/django.po @@ -1,90 +1,80 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # nahuel, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-18 22:47+0000\n" -"Last-Translator: nahuel\n" -"Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" -"fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: French (http://www.transifex.com/projects/p/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=2; plural=(n > 1);\n" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Définissez cette valeur à autre chose que 80 si vous avez besoin qu'un port " -"spécifique apparaisse dans les URLs (e.g. développement sur le port 8000). " -"Ceci n'affecte pas la prise en charge des requêtes (les redirections de port " -"continuent de fonctionner)." +msgstr "Définissez cette valeur à autre chose que 80 si vous avez besoin qu'un port spécifique apparaisse dans les URLs (e.g. développement sur le port 8000). Ceci n'affecte pas la prise en charge des requêtes (les redirections de port continuent de fonctionner)." -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" msgstr "" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "Le titre de la page comme vous souhaiteriez que les lecteurs la voient" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"Le nom de la page comme elle apparaîtra dans l'URL e.g http://domain.com/" -"blog/[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "Le nom de la page comme elle apparaîtra dans l'URL e.g http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Titre de la page" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." msgstr "" -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" -msgstr "" -"Si un lien vers cette page devra apparaître dans les menus générés " -"automatiquement" +msgstr "Si un lien vers cette page devra apparaître dans les menus générés automatiquement" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "le nom '%s' (utilisé dans la liste subpage_types) n'est pas défini." +msgstr "" diff --git a/wagtail/wagtailcore/locale/gl/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/gl/LC_MESSAGES/django.mo index 44ec3a08e..d9f4d84ce 100644 Binary files a/wagtail/wagtailcore/locale/gl/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/gl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/gl/LC_MESSAGES/django.po index 8686ab164..4201d9b9e 100644 --- a/wagtail/wagtailcore/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/gl/LC_MESSAGES/django.po @@ -1,91 +1,80 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-23 10:32+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" -"language/gl/)\n" -"Language: gl\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/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" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Cambia isto a algo que non sexa o 80 se necesitas que un porto específico " -"apareza nas URLs (p.e. desenvolvemento no porto 8000). Isto non afecta ao " -"manexo de solicitudes (así que a redirección de portos segue funcionando)." +msgstr "Cambia isto a algo que non sexa o 80 se necesitas que un porto específico apareza nas URLs (p.e. desenvolvemento no porto 8000). Isto non afecta ao manexo de solicitudes (así que a redirección de portos segue funcionando)." -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"Se é afirmativo, este sitio manexará solicitudes para todos os demais nomes " -"de host que non teñan unha entrada por si mesmos" +msgstr "Se é afirmativo, este sitio manexará solicitudes para todos os demais nomes de host que non teñan unha entrada por si mesmos" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "O título da páxina como queres que sexa visto polo público" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"O nome da páxina tal como aparecerá nas URLs p.ex. http://domain.com/blog/" -"[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "O nome da páxina tal como aparecerá nas URLs p.ex. http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Título da páxina" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." -msgstr "" -"Opcional. Título 'Amigable para o Motor de Busca'. Aparecerá na parte " -"superior da ventá do navegador." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." +msgstr "Opcional. Título 'Amigable para o Motor de Busca'. Aparecerá na parte superior da ventá do navegador." -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" msgstr "Un enlace a esta página aparecerá en menús xerados automáticamente" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "nome '%s' (usado en la lista de subpage_types) non está definido." +msgstr "" diff --git a/wagtail/wagtailcore/locale/mn/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/mn/LC_MESSAGES/django.mo index d7dbad6fb..7290e12fb 100644 Binary files a/wagtail/wagtailcore/locale/mn/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/mn/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/mn/LC_MESSAGES/django.po index 68b62ebd2..064a1dabb 100644 --- a/wagtail/wagtailcore/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/mn/LC_MESSAGES/django.po @@ -1,81 +1,80 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# delgermurun <pdelgermurun@gmail.com>, 2014 +# Delgermurun Purevkhuuu <info@delgermurun.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-04 05:03+0000\n" -"Last-Translator: delgermurun <pdelgermurun@gmail.com>\n" -"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" -"language/mn/)\n" -"Language: mn\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/language/mn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: mn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." msgstr "" -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" msgstr "" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" msgstr "" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Хуудасны гарчиг" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." msgstr "" -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" msgstr "" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." msgstr "" diff --git a/wagtail/wagtailcore/locale/pl/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/pl/LC_MESSAGES/django.mo index 784f46112..60c93acf4 100644 Binary files a/wagtail/wagtailcore/locale/pl/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/pl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/pl/LC_MESSAGES/django.po index 93f803a5a..d0a696b89 100644 --- a/wagtail/wagtailcore/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # utek <mail@utek.pl>, 2014 # utek <mail@utek.pl>, 2014 @@ -9,86 +9,73 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-23 10:22+0000\n" -"Last-Translator: utek <mail@utek.pl>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" -"pl/)\n" -"Language: pl\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Ustaw na inną wartość niż 80 jeżeli istnieje potrzeba pojawienia się " -"konkretnego portu w URLach (np. port wersji roboczej 8000). Nie ma wpływu na " -"obsługę żądań (przekierowanie portów będzie nadal działało)." +msgstr "Ustaw na inną wartość niż 80 jeżeli istnieje potrzeba pojawienia się konkretnego portu w URLach (np. port wersji roboczej 8000). Nie ma wpływu na obsługę żądań (przekierowanie portów będzie nadal działało)." -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"Wartość true sprawi, że ta strona będzie obsługiwała żądania wszystkich " -"innych hostów, które nie mają ustawionej strony." +msgstr "Wartość true sprawi, że ta strona będzie obsługiwała żądania wszystkich innych hostów, które nie mają ustawionej strony." -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "Tytuł strony jaki chcesz żeby był widoczny publicznie." -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"Nazwa strony, która będzie wyświetlana w URLach np. http://domain.com/blog/" -"[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "Nazwa strony, która będzie wyświetlana w URLach np. http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Tytuł strony" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." -msgstr "" -"Opcjonalne. Tytuł 'przyjazny wyszukiwarkom'. Będzie widoczny się na górze " -"okna przeglądarki." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." +msgstr "Opcjonalne. Tytuł 'przyjazny wyszukiwarkom'. Będzie widoczny się na górze okna przeglądarki." -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" -msgstr "" -"Czy link do tej strony zostanie wyświetlony w menu tworzonym automatycznie." +msgstr "Czy link do tej strony zostanie wyświetlony w menu tworzonym automatycznie." -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "nazwa '%s' (używana w liście subpage_types) nie jest zdefiniowana." +msgstr "" diff --git a/wagtail/wagtailcore/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..51a033d05 Binary files /dev/null and b/wagtail/wagtailcore/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..5da56cf9a --- /dev/null +++ b/wagtail/wagtailcore/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,97 @@ +# 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. +# +# Translators: +# Thiago Cangussu <cangussu.thg@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-03 01:52+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt_PT\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" + +#: models.py:46 +msgid "" +"Set this to something other than 80 if you need a specific port number to " +"appear in URLs (e.g. development on port 8000). Does not affect request " +"handling (so port forwarding still works)." +msgstr "" +"Atribua um valor diferente de 80 se você necessitar que um número de porto " +"específico apareça nas URLs (ex. desenvolvimento no porto 8000). Não afeta o " +"tratamento de requisições (assim, o redirecionamento de portos continua a " +"funcionar)." + +#: models.py:48 +msgid "" +"If true, this site will handle requests for all other hostnames that do not " +"have a site entry of their own" +msgstr "" +"Se verdadeiro, este site irá processar requisições de todos os outros " +"hostnames que não tenham um site próprio" + +#: models.py:109 +#, python-format +msgid "" +"%(hostname)s is already configured as the default site. You must unset that " +"before you can save this site as default." +msgstr "" +"O %(hostname)s já está configurado como site pré-definido. Tem de alterar " +"essa configuração antes de poder guardar este site como pré-definido." + +#: models.py:277 +msgid "The page title as you'd like it to be seen by the public" +msgstr "O título da página como você gostaria que fosse visto pelo público" + +#: models.py:278 +msgid "" +"The name of the page as it will appear in URLs e.g http://domain.com/blog/" +"[my-slug]/" +msgstr "" +"O nome da página como ele irá aparecer nas URLs ex.: http://domain.com/blog/" +"[my-slug]/" + +#: models.py:287 +msgid "Page title" +msgstr "Título da página" + +#: models.py:287 +msgid "" +"Optional. 'Search Engine Friendly' title. This will appear at the top of the " +"browser window." +msgstr "" +"Opcional. Título 'Amigável para Motores de Busca'. Isto irá aparecer no topo " +"da janela do navegador." + +#: models.py:288 +msgid "" +"Whether a link to this page will appear in automatically generated menus" +msgstr "" +"Se um link para esta página irá aparecer nos menus gerados automaticamente" + +#: models.py:291 +msgid "Go live date/time" +msgstr "Data/hora de publicação" + +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." +msgstr "Por favor adicione uma data-hora no formato AAAA-MM-DD hh:mm:ss." + +#: models.py:292 +msgid "Expiry date/time" +msgstr "Data/hora terminal" + +#: models.py:564 +msgid "name '{0}' (used in subpage_types list) is not defined." +msgstr "" +"O nome '{0}' (usado na lista de tipos de sub-páginas) não está definido." diff --git a/wagtail/wagtailcore/locale/ro/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/ro/LC_MESSAGES/django.mo index 7e737e460..22c711e9e 100644 Binary files a/wagtail/wagtailcore/locale/ro/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/ro/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/ro/LC_MESSAGES/django.po index efe4bad51..d6c9a1902 100644 --- a/wagtail/wagtailcore/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/ro/LC_MESSAGES/django.po @@ -1,95 +1,80 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# zerolab, 2014 +# Dan Braghis, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-24 22:29+0000\n" -"Last-Translator: zerolab\n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" -"language/ro/)\n" -"Language: ro\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"Dacă aveți nevoie ca un număr de port specific să apară în adrese de " -"internet (de exemplu, dezvoltare pe portul 8000) setați aceasta la altceva " -"decât 80. Nu influențează gestionarea solicitărilor și transmiterile de port " -"vor continua să funcționeze." +msgstr "Dacă aveți nevoie ca un număr de port specific să apară în adrese de internet (de exemplu, dezvoltare pe portul 8000) setați aceasta la altceva decât 80. Nu influențează gestionarea solicitărilor și transmiterile de port vor continua să funcționeze." -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"Dacă e 'true', acest sit va gestiona solicitări pentru toate hostname-urile " -"fără setări separate" +msgstr "Dacă e 'true', acest sit va gestiona solicitări pentru toate hostname-urile fără setări separate" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "Titlul paginii așa cum doriți să fie vizibil public" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" -msgstr "" -"Numele paginii așa cum va apărea în adrese. De exemplu, http://domain.com/" -"blog/[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" +msgstr "Numele paginii așa cum va apărea în adrese. De exemplu, http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "Titlu pagină" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." -msgstr "" -"Opțional. Titlu favorabil motoarelor de căutare. Apare în partea de sus a " -"browserului." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." +msgstr "Opțional. Titlu favorabil motoarelor de căutare. Apare în partea de sus a browserului." -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" -msgstr "" -"Dacă un link către această pagină va apărea în meniurile generate în mod " -"automat" +msgstr "Dacă un link către această pagină va apărea în meniurile generate în mod automat" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "numele '%s' (folosit în lista subpage_types) nu este definit." +msgstr "" diff --git a/wagtail/wagtailcore/locale/zh/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/zh/LC_MESSAGES/django.mo index 64499c7a8..003a8aaef 100644 Binary files a/wagtail/wagtailcore/locale/zh/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/zh/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/zh/LC_MESSAGES/django.po index c2b0bf43f..4dc9d01ee 100644 --- a/wagtail/wagtailcore/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/zh/LC_MESSAGES/django.po @@ -1,84 +1,79 @@ # 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: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-02-28 16:07+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" -"zh/)\n" -"Language: zh\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/zh/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " "handling (so port forwarding still works)." -msgstr "" -"如果你需要指定端口,请选择一个有别于80的端口(比如开发端口8000)。 不影响接受请" -"求 (端口转发仍然有效)" +msgstr "如果你需要指定端口,请选择一个有别于80的端口(比如开发端口8000)。 不影响接受请求 (端口转发仍然有效)" -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" -msgstr "" -"如果是真的,这个网站将处理没有一个属于自己的主机名的其他所有主机名的请求" +msgstr "如果是真的,这个网站将处理没有一个属于自己的主机名的其他所有主机名的请求" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "页面标题,你想被大众所看到的" -#: models.py:276 +#: models.py:278 msgid "" -"The name of the page as it will appear in URLs e.g http://domain.com/blog/" -"[my-slug]/" +"The name of the page as it will appear in URLs e.g http://domain.com/blog" +"/[my-slug]/" msgstr "一个出现在URL的名字 比如 http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "页面标题" -#: models.py:285 +#: models.py:287 msgid "" -"Optional. 'Search Engine Friendly' title. This will appear at the top of the " -"browser window." +"Optional. 'Search Engine Friendly' title. This will appear at the top of the" +" browser window." msgstr "可选 ‘搜索引擎友好’ 标题。 这会显示在浏览器窗口顶部" -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" msgstr "一个链接到这页的链接会显示在自动生成的菜单中" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 -#, fuzzy +#: models.py:564 msgid "name '{0}' (used in subpage_types list) is not defined." -msgstr "名称为 '%s' (用于子页面类型列表) 没有被创建." +msgstr "" diff --git a/wagtail/wagtailcore/locale/zh_TW/LC_MESSAGES/django.mo b/wagtail/wagtailcore/locale/zh_TW/LC_MESSAGES/django.mo index db50be133..616f41b57 100644 Binary files a/wagtail/wagtailcore/locale/zh_TW/LC_MESSAGES/django.mo and b/wagtail/wagtailcore/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailcore/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtailcore/locale/zh_TW/LC_MESSAGES/django.po index 642c496e2..3a3a2bfa6 100644 --- a/wagtail/wagtailcore/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtailcore/locale/zh_TW/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-28 16:07+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: models.py:44 +#: models.py:46 msgid "" "Set this to something other than 80 if you need a specific port number to " "appear in URLs (e.g. development on port 8000). Does not affect request " @@ -26,58 +26,58 @@ msgstr "" "如果你需要指定 port,請選擇一個非 80 的 port number (例如: 開發中用 8000 " "port)。 不影響 request 處理 (port forwarding 仍然有效)" -#: models.py:46 +#: models.py:48 msgid "" "If true, this site will handle requests for all other hostnames that do not " "have a site entry of their own" msgstr "" "如果這是 Ture 的話,這個網站將處理其他沒有自己網站的 hostname 的 request。" -#: models.py:107 +#: models.py:109 #, python-format msgid "" "%(hostname)s is already configured as the default site. You must unset that " "before you can save this site as default." msgstr "" -#: models.py:275 +#: models.py:277 msgid "The page title as you'd like it to be seen by the public" msgstr "頁面標題 (你想讓外界看到的)" -#: models.py:276 +#: models.py:278 msgid "" "The name of the page as it will appear in URLs e.g http://domain.com/blog/" "[my-slug]/" msgstr "一個出現在 URL 的名字,例如 http://domain.com/blog/[my-slug]/" -#: models.py:285 +#: models.py:287 msgid "Page title" msgstr "頁面標題" -#: models.py:285 +#: models.py:287 msgid "" "Optional. 'Search Engine Friendly' title. This will appear at the top of the " "browser window." msgstr "(可選) '搜尋引擎友善' 標題。 這會顯示在瀏覽器的視窗最上方" -#: models.py:286 +#: models.py:288 msgid "" "Whether a link to this page will appear in automatically generated menus" msgstr "是否在自動生成的 Menu 裡顯示一個連結到此頁面" -#: models.py:289 +#: models.py:291 msgid "Go live date/time" msgstr "" -#: models.py:289 models.py:290 -msgid "Please add a date-time in the form YYYY-MM-DD hh:mm." +#: models.py:291 models.py:292 +msgid "Please add a date-time in the form YYYY-MM-DD hh:mm:ss." msgstr "" -#: models.py:290 +#: models.py:292 msgid "Expiry date/time" msgstr "" -#: models.py:559 +#: models.py:564 #, fuzzy msgid "name '{0}' (used in subpage_types list) is not defined." msgstr "'%s' (用於子頁面類型列表) 沒有被建立。" diff --git a/wagtail/wagtailcore/models.py b/wagtail/wagtailcore/models.py index a6d3c1f07..2919b809c 100644 --- a/wagtail/wagtailcore/models.py +++ b/wagtail/wagtailcore/models.py @@ -13,6 +13,7 @@ from django.http import Http404 from django.core.cache import cache from django.core.handlers.wsgi import WSGIRequest from django.core.handlers.base import BaseHandler +from django.core.urlresolvers import reverse from django.contrib.contenttypes.models import ContentType from django.contrib.auth.models import Group from django.conf import settings @@ -31,7 +32,7 @@ from wagtail.wagtailcore.utils import camelcase_to_underscore from wagtail.wagtailcore.query import PageQuerySet from wagtail.wagtailcore.url_routing import RouteResult -from wagtail.wagtailsearch import indexed +from wagtail.wagtailsearch import index from wagtail.wagtailsearch.backends import get_search_backend @@ -273,7 +274,7 @@ class PageBase(models.base.ModelBase): @python_2_unicode_compatible -class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, indexed.Indexed)): +class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, index.Indexed)): title = models.CharField(max_length=255, help_text=_("The page title as you'd like it to be seen by the public")) slug = models.SlugField(help_text=_("The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/")) # TODO: enforce uniqueness on slug field per parent (will have to be done at the Django @@ -293,13 +294,13 @@ class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, indexed.Index expired = models.BooleanField(default=False, editable=False) search_fields = ( - indexed.SearchField('title', partial_match=True, boost=100), - indexed.FilterField('id'), - indexed.FilterField('live'), - indexed.FilterField('owner'), - indexed.FilterField('content_type'), - indexed.FilterField('path'), - indexed.FilterField('depth'), + index.SearchField('title', partial_match=True, boost=100), + index.FilterField('id'), + index.FilterField('live'), + index.FilterField('owner'), + index.FilterField('content_type'), + index.FilterField('path'), + index.FilterField('depth'), ) def __init__(self, *args, **kwargs): @@ -488,7 +489,7 @@ class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, indexed.Index """Return the full URL (including protocol / domain) to this page, or None if it is not routable""" for (id, root_path, root_url) in Site.get_site_root_paths(): if self.url_path.startswith(root_path): - return root_url + self.url_path[len(root_path) - 1:] + return root_url + reverse('wagtail_serve', args=(self.url_path[len(root_path):],)) @property def url(self): @@ -503,7 +504,7 @@ class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, indexed.Index root_paths = Site.get_site_root_paths() for (id, root_path, root_url) in Site.get_site_root_paths(): if self.url_path.startswith(root_path): - return ('' if len(root_paths) == 1 else root_url) + self.url_path[len(root_path) - 1:] + return ('' if len(root_paths) == 1 else root_url) + reverse('wagtail_serve', args=(self.url_path[len(root_path):],)) def relative_url(self, current_site): """ @@ -513,7 +514,7 @@ class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, indexed.Index """ for (id, root_path, root_url) in Site.get_site_root_paths(): if self.url_path.startswith(root_path): - return ('' if current_site.id == id else root_url) + self.url_path[len(root_path) - 1:] + return ('' if current_site.id == id else root_url) + reverse('wagtail_serve', args=(self.url_path[len(root_path):],)) @classmethod def search(cls, query_string, show_unpublished=False, search_title_only=False, extra_filters={}, prefetch_related=[], path=None): diff --git a/wagtail/wagtailcore/tests/test_page_model.py b/wagtail/wagtailcore/tests/test_page_model.py index 8a542d594..d494b2654 100644 --- a/wagtail/wagtailcore/tests/test_page_model.py +++ b/wagtail/wagtailcore/tests/test_page_model.py @@ -1,6 +1,7 @@ import warnings from django.test import TestCase, Client +from django.test.utils import override_settings from django.http import HttpRequest, Http404 from wagtail.utils.deprecation import RemovedInWagtail06Warning @@ -100,6 +101,16 @@ class TestSiteRouting(TestCase): class TestRouting(TestCase): fixtures = ['test.json'] + # need to clear urlresolver caches before/after tests, because we override ROOT_URLCONF + # in some tests here + def setUp(self): + from django.core.urlresolvers import clear_url_caches + clear_url_caches() + + def tearDown(self): + from django.core.urlresolvers import clear_url_caches + clear_url_caches() + def test_urls(self): default_site = Site.objects.get(is_default_site=True) homepage = Page.objects.get(url_path='/home/') @@ -134,6 +145,21 @@ class TestRouting(TestCase): self.assertEqual(christmas_page.relative_url(default_site), 'http://events.example.com/christmas/') self.assertEqual(christmas_page.relative_url(events_site), '/christmas/') + @override_settings(ROOT_URLCONF='wagtail.tests.non_root_urls') + def test_urls_with_non_root_urlconf(self): + default_site = Site.objects.get(is_default_site=True) + homepage = Page.objects.get(url_path='/home/') + christmas_page = Page.objects.get(url_path='/home/events/christmas/') + + # Basic installation only has one site configured, so page.url will return local URLs + self.assertEqual(homepage.full_url, 'http://localhost/site/') + self.assertEqual(homepage.url, '/site/') + self.assertEqual(homepage.relative_url(default_site), '/site/') + + self.assertEqual(christmas_page.full_url, 'http://localhost/site/events/christmas/') + self.assertEqual(christmas_page.url, '/site/events/christmas/') + self.assertEqual(christmas_page.relative_url(default_site), '/site/events/christmas/') + def test_request_routing(self): homepage = Page.objects.get(url_path='/home/') christmas_page = EventPage.objects.get(url_path='/home/events/christmas/') @@ -179,6 +205,16 @@ class TestServeView(TestCase): from django.core.cache import cache cache.delete('wagtail_site_root_paths') + # also need to clear urlresolver caches before/after tests, because we override + # ROOT_URLCONF in some tests here + from django.core.urlresolvers import clear_url_caches + clear_url_caches() + + def tearDown(self): + from django.core.urlresolvers import clear_url_caches + clear_url_caches() + + def test_serve(self): response = self.client.get('/events/christmas/') @@ -190,6 +226,18 @@ class TestServeView(TestCase): self.assertContains(response, '<h1>Christmas</h1>') self.assertContains(response, '<h2>Event</h2>') + @override_settings(ROOT_URLCONF='wagtail.tests.non_root_urls') + def test_serve_with_non_root_urls(self): + response = self.client.get('/site/events/christmas/') + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.templates[0].name, 'tests/event_page.html') + christmas_page = EventPage.objects.get(url_path='/home/events/christmas/') + self.assertEqual(response.context['self'], christmas_page) + + self.assertContains(response, '<h1>Christmas</h1>') + self.assertContains(response, '<h2>Event</h2>') + def test_serve_unknown_page_returns_404(self): response = self.client.get('/events/quinquagesima/') self.assertEqual(response.status_code, 404) diff --git a/wagtail/wagtailcore/urls.py b/wagtail/wagtailcore/urls.py index 9777dea8a..2e01bbfe0 100644 --- a/wagtail/wagtailcore/urls.py +++ b/wagtail/wagtailcore/urls.py @@ -10,5 +10,5 @@ urlpatterns = [ # a '/'. If a trailing slash is not present, we leave CommonMiddleware to # handle it as usual (i.e. redirect it to the trailing slash version if # settings.APPEND_SLASH is True) - url(r'^((?:[\w\-]+/)*)$', views.serve) + url(r'^((?:[\w\-]+/)*)$', views.serve, name='wagtail_serve') ] diff --git a/wagtail/wagtaildocs/admin_urls.py b/wagtail/wagtaildocs/admin_urls.py index 9eaa3a50e..c26826b8c 100644 --- a/wagtail/wagtaildocs/admin_urls.py +++ b/wagtail/wagtaildocs/admin_urls.py @@ -11,4 +11,5 @@ urlpatterns = [ url(r'^chooser/$', chooser.chooser, name='wagtaildocs_chooser'), url(r'^chooser/(\d+)/$', chooser.document_chosen, name='wagtaildocs_document_chosen'), url(r'^chooser/upload/$', chooser.chooser_upload, name='wagtaildocs_chooser_upload'), + url(r'^usage/(\d+)/$', documents.usage, name='wagtaildocs_document_usage'), ] diff --git a/wagtail/wagtaildocs/locale/bg/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/bg/LC_MESSAGES/django.mo index 83d710257..72177bf8e 100644 Binary files a/wagtail/wagtaildocs/locale/bg/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/bg/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/bg/LC_MESSAGES/django.po index b1fa27c73..ff8ce4bd1 100644 --- a/wagtail/wagtaildocs/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/bg/LC_MESSAGES/django.po @@ -1,38 +1,38 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# LyuboslavPetrov <petrov.lyuboslav@gmail.com>, 2014 +# Lyuboslav Petrov <petrov.lyuboslav@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" -"language/bg/)\n" -"Language: bg\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/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" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Заглавие" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Файл" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Тагове" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Документи" @@ -67,13 +67,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Има едно съвпадение\n" -" " -msgstr[1] "" -"\n" -"Има %(counter)s съвпадения" +msgstr[0] "\n Има едно съвпадение\n " +msgstr[1] "\nИма %(counter)s съвпадения" #: templates/wagtaildocs/chooser/results.html:12 msgid "Latest documents" @@ -133,11 +128,34 @@ msgstr "Качени" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "Не сте качили никакви документи. Защо не <a href=\"%(wagtaildocs_add_document_url)s\">качите един сега</a>?" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"Не сте качили никакви документи. Защо не <a href=" -"\"%(wagtaildocs_add_document_url)s\">качите един сега</a>?" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -147,22 +165,22 @@ msgstr "Изчисти избора" msgid "Choose another document" msgstr "Избери друг документ" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Документ '{0}' добавен." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "Документа не бе запазен поради грешки." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Документа '{0}' е обновен." -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Документа '{0}' е изтрит." diff --git a/wagtail/wagtaildocs/locale/ca/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/ca/LC_MESSAGES/django.mo index f5a3507ef..cc704ed7d 100644 Binary files a/wagtail/wagtaildocs/locale/ca/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/ca/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/ca/LC_MESSAGES/django.po index df524532c..03625463e 100644 --- a/wagtail/wagtaildocs/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/ca/LC_MESSAGES/django.po @@ -1,38 +1,38 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# Lloople <d.lloople@gmail.com>, 2014 +# David Llop <d.lloople@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" -"ca/)\n" -"Language: ca\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/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" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Títol" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Arxiu" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Tags" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Documents" @@ -67,12 +67,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Hi ha un resultat" -msgstr[1] "" -"\n" -"Hi han %(counter)s resultats" +msgstr[0] "\nHi ha un resultat" +msgstr[1] "\nHi han %(counter)s resultats" #: templates/wagtaildocs/chooser/results.html:12 msgid "Latest documents" @@ -132,11 +128,34 @@ msgstr "Pujat" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "No has pujat cap document. Per què no <a href=%(wagtaildocs_add_document_url)s\">pujes un ara</a>?" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"No has pujat cap document. Per què no <a href=" -"%(wagtaildocs_add_document_url)s\">pujes un ara</a>?" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -146,22 +165,22 @@ msgstr "Opció clara" msgid "Choose another document" msgstr "Escull un altre document" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "Cercar documents" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Document '{0}' afegit." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "El document no s'ha pogut desar." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Document '{0}' actualitzat" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Document '{0}' esborrat." diff --git a/wagtail/wagtaildocs/locale/de/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/de/LC_MESSAGES/django.mo index e420efdb4..d439342aa 100644 Binary files a/wagtail/wagtaildocs/locale/de/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/de/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/de/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/de/LC_MESSAGES/django.po index 3039b9435..ae5dccc63 100644 --- a/wagtail/wagtaildocs/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/de/LC_MESSAGES/django.po @@ -1,39 +1,40 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# jspielmann <j@spielmannsolutions.com>, 2014 +# Johannes Spielmann <j@spielmannsolutions.com>, 2014 +# karlsander <karlsander@gmail.com>, 2014 # pcraston <patrick@craston.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-24 18:54+0000\n" -"Last-Translator: pcraston <patrick@craston.com>\n" -"Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" -"de/)\n" -"Language: de\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: German (http://www.transifex.com/projects/p/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" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Titel" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Datei" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Schlagwörter" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Dokumente" @@ -68,14 +69,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Es gibt ein Ergebnis\n" -" " -msgstr[1] "" -"\n" -" Es gibt %(counter)s Ergebnisse\n" -" " +msgstr[0] "\n Es gibt ein Ergebnis\n " +msgstr[1] "\n Es gibt %(counter)s Ergebnisse\n " #: templates/wagtaildocs/chooser/results.html:12 msgid "Latest documents" @@ -85,8 +80,7 @@ msgstr "Neueste Dokumente" #: templates/wagtaildocs/documents/results.html:18 #, python-format msgid "Sorry, no documents match \"<em>%(query_string)s</em>\"" -msgstr "" -"Es gibt leider keine Dokumente zum Suchbegriff \"<em>%(query_string)s</em>\"" +msgstr "Es gibt leider keine Dokumente zum Suchbegriff \"<em>%(query_string)s</em>\"" #: templates/wagtaildocs/documents/_file_field.html:5 msgid "Change document:" @@ -136,11 +130,34 @@ msgstr "Hochgeladen" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "Sie haben noch keine Dokumente hochgeladen. <a href=\"%(wagtaildocs_add_document_url)s\">Laden Sie doch jetzt eins hoch!</a>" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"Sie haben noch keine Dokumente hochgeladen.<a href=" -"\"%(wagtaildocs_add_document_url)s\">Laden Sie doch jetzt eins hoch!</a>" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -150,22 +167,22 @@ msgstr "Auswahl zurücksetzen" msgid "Choose another document" msgstr "Anderes Dokument wählen" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "Nach Dokumenten suchen" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Dokument '{0}' wurde hinzugefügt." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "Aufgrund eines Fehlers konnte das Dokument nicht gespeichert werden." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Dokument '{0}' wurde hochgeladen" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Dokument '{0}' wurde gelöscht." diff --git a/wagtail/wagtaildocs/locale/el/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/el/LC_MESSAGES/django.mo index c3f0f44cc..b8d5b0a38 100644 Binary files a/wagtail/wagtaildocs/locale/el/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/el/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/el/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/el/LC_MESSAGES/django.po index a2788f9ef..15b8a82e9 100644 --- a/wagtail/wagtaildocs/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/el/LC_MESSAGES/django.po @@ -1,38 +1,38 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # serafeim <serafeim@torchbox.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" -"el/)\n" -"Language: el\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Greek (http://www.transifex.com/projects/p/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" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Τίτλος" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Αρχείο" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Ετικέτες" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Έγγραφα" @@ -67,14 +67,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Βρέθηκε ένα αποτέλεσμα\n" -" " -msgstr[1] "" -"\n" -" Βρέθηκαν %(counter)s αποτελέσματα\n" -" " +msgstr[0] "\n Βρέθηκε ένα αποτέλεσμα\n " +msgstr[1] "\n Βρέθηκαν %(counter)s αποτελέσματα\n " #: templates/wagtaildocs/chooser/results.html:12 msgid "Latest documents" @@ -84,8 +78,7 @@ msgstr "Τελευταία έγγραφα" #: templates/wagtaildocs/documents/results.html:18 #, python-format msgid "Sorry, no documents match \"<em>%(query_string)s</em>\"" -msgstr "" -"Δε βρέθηκαν έγγραφα που να ταιριάζουν με το \"<em>%(query_string)s</em>\"" +msgstr "Δε βρέθηκαν έγγραφα που να ταιριάζουν με το \"<em>%(query_string)s</em>\"" #: templates/wagtaildocs/documents/_file_field.html:5 msgid "Change document:" @@ -135,11 +128,34 @@ msgstr "Ανεβασμένο" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "Δεν υπάρχουν έγγραφα. Θέλετε να <a href=\"%(wagtaildocs_add_document_url)s\">ανεβάσετε μερικά</a>;" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"Δεν υπάρχουν έγγραφα. Θέλετε να <a href=\"%(wagtaildocs_add_document_url)s" -"\">ανεβάσετε μερικά</a>;" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -149,22 +165,22 @@ msgstr "Καθαρισμός επιλογής" msgid "Choose another document" msgstr "Επιλογή άλλου εγγράφου" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "Αναζήτηση εγγράφων" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Το έγγραφο '{0}' προστέθηκε." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "Δεν ήταν δυνατή η αποθήκευση του εγγράφου." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Έγινε διόρθωση του εγγράφου '{0}'" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Το έγγραφο '{0}' διαγράφηκε." diff --git a/wagtail/wagtaildocs/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/en/LC_MESSAGES/django.mo index 1ef6acf6b..3b83aafe9 100644 Binary files a/wagtail/wagtaildocs/locale/en/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/en/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/en/LC_MESSAGES/django.po index 311446b0a..88d049cda 100644 --- a/wagtail/wagtaildocs/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,20 +17,21 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "" @@ -130,6 +131,31 @@ msgid "" "\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" msgstr "" +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" +msgstr "" + #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" msgstr "" @@ -138,22 +164,22 @@ msgstr "" msgid "Choose another document" msgstr "" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "" -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "" -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "" diff --git a/wagtail/wagtaildocs/locale/es/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/es/LC_MESSAGES/django.mo index 3463b0618..d68ebd190 100644 Binary files a/wagtail/wagtaildocs/locale/es/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/es/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/es/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/es/LC_MESSAGES/django.po index 8a5af4eb5..a8b711977 100644 --- a/wagtail/wagtaildocs/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 @@ -9,31 +9,31 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" -"es/)\n" -"Language: es\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/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=2; plural=(n != 1);\n" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Título" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Archivo" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Etiquetas" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Documentos" @@ -68,14 +68,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Hay una coincidencia\n" -" " -msgstr[1] "" -"\n" -" Hay %(counter)s coincidencias\n" -" " +msgstr[0] "\n Hay una coincidencia\n " +msgstr[1] "\n Hay %(counter)s coincidencias\n " #: templates/wagtaildocs/chooser/results.html:12 msgid "Latest documents" @@ -135,11 +129,34 @@ msgstr "Subidos" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "No has subido documentos. ¿Por qué no <a href=\"%(wagtaildocs_add_document_url)s\">subir uno ahora</a>?" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"No has subido documentos. ¿Por qué no <a href=" -"\"%(wagtaildocs_add_document_url)s\">subir uno ahora</a>?" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -149,22 +166,22 @@ msgstr "Borrar selección" msgid "Choose another document" msgstr "Elegir otro documento" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "Buscar documentos" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Documento '{0}' añadido." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "El documento no pudo ser guardado debido a errores." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Documento '{0}' actualizado" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Documento '{0}' eliminado." diff --git a/wagtail/wagtaildocs/locale/eu/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/eu/LC_MESSAGES/django.mo index 7096916fe..972e8348c 100644 Binary files a/wagtail/wagtaildocs/locale/eu/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/eu/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/eu/LC_MESSAGES/django.po index e443bcf83..aa6f5d81b 100644 --- a/wagtail/wagtaildocs/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/eu/LC_MESSAGES/django.po @@ -1,37 +1,37 @@ # 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: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" -"eu/)\n" -"Language: eu\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Basque (http://www.transifex.com/projects/p/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" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "" @@ -127,8 +127,33 @@ msgstr "" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 @@ -139,22 +164,22 @@ msgstr "" msgid "Choose another document" msgstr "" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "" -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "" -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "" diff --git a/wagtail/wagtaildocs/locale/fr/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/fr/LC_MESSAGES/django.mo index 238279d50..96d2368bd 100644 Binary files a/wagtail/wagtaildocs/locale/fr/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/fr/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/fr/LC_MESSAGES/django.po index c7f6987d1..ec5c5f9bf 100644 --- a/wagtail/wagtaildocs/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/fr/LC_MESSAGES/django.po @@ -1,38 +1,38 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # nahuel, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-18 23:15+0000\n" -"Last-Translator: nahuel\n" -"Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" -"fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: French (http://www.transifex.com/projects/p/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=2; plural=(n > 1);\n" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Titre" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Fichier" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Mots-clés" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Documents" @@ -128,8 +128,33 @@ msgstr "" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 @@ -140,22 +165,22 @@ msgstr "" msgid "Choose another document" msgstr "" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Document '{0}' ajouté." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "Le document ne peut être enregistré du fait d'erreurs." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Document '{0}' mis à jour" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Document '{0}' supprimé." diff --git a/wagtail/wagtaildocs/locale/gl/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/gl/LC_MESSAGES/django.mo index b6812e7ae..ea158d485 100644 Binary files a/wagtail/wagtaildocs/locale/gl/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/gl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/gl/LC_MESSAGES/django.po index 7db93b01e..4a2ce5bef 100644 --- a/wagtail/wagtaildocs/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/gl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 @@ -9,31 +9,31 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-23 10:32+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" -"language/gl/)\n" -"Language: gl\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/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" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Título" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Arquivo" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Etiquetas" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Documentos" @@ -68,14 +68,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Hai unha coincidencia\n" -" " -msgstr[1] "" -"\n" -" Hai %(counter)s coincidencias\n" -" " +msgstr[0] "\n Hai unha coincidencia\n " +msgstr[1] "\n Hai %(counter)s coincidencias\n " #: templates/wagtaildocs/chooser/results.html:12 msgid "Latest documents" @@ -135,11 +129,34 @@ msgstr "Subidos" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "Non subiches documentos. ¿Por qué non <a href=\"%(wagtaildocs_add_document_url)s\">subir un agora</a>?" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"Non subiches documentos. ¿Por qué non <a href=" -"\"%(wagtaildocs_add_document_url)s\">subir un agora</a>?" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -149,22 +166,22 @@ msgstr "Borrar selección" msgid "Choose another document" msgstr "Elixir outro documento" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "Buscar documentos" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Documento '{0}' engadido." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "O documento non puido ser gardado debido a erros." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Documento '{0}' actualizado" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Documento '{0}' eliminado." diff --git a/wagtail/wagtaildocs/locale/mn/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/mn/LC_MESSAGES/django.mo index e991d2719..25e7bc353 100644 Binary files a/wagtail/wagtaildocs/locale/mn/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/mn/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/mn/LC_MESSAGES/django.po index 347262eb5..5e127bb88 100644 --- a/wagtail/wagtaildocs/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/mn/LC_MESSAGES/django.po @@ -1,37 +1,37 @@ # 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: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" -"language/mn/)\n" -"Language: mn\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/language/mn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: mn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "" @@ -127,8 +127,33 @@ msgstr "" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 @@ -139,22 +164,22 @@ msgstr "" msgid "Choose another document" msgstr "" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "" -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "" -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "" diff --git a/wagtail/wagtaildocs/locale/pl/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/pl/LC_MESSAGES/django.mo index 48d3dc03b..bb1d9fb47 100644 Binary files a/wagtail/wagtaildocs/locale/pl/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/pl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/pl/LC_MESSAGES/django.po index 35f5cc84f..81db48471 100644 --- a/wagtail/wagtaildocs/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # utek <mail@utek.pl>, 2014 # utek <mail@utek.pl>, 2014 @@ -9,32 +9,31 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" -"pl/)\n" -"Language: pl\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Tytuł" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Plik" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Tagi" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Dokumenty" @@ -69,18 +68,9 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Jedno dopasowanie\n" -" " -msgstr[1] "" -"\n" -" Są %(counter)s dopasowania\n" -" " -msgstr[2] "" -"\n" -" Jest %(counter)s dopasowań\n" -" " +msgstr[0] "\n Jedno dopasowanie\n " +msgstr[1] "\n Są %(counter)s dopasowania\n " +msgstr[2] "\n Jest %(counter)s dopasowań\n " #: templates/wagtaildocs/chooser/results.html:12 msgid "Latest documents" @@ -90,8 +80,7 @@ msgstr "Najnowsze dokumenty" #: templates/wagtaildocs/documents/results.html:18 #, python-format msgid "Sorry, no documents match \"<em>%(query_string)s</em>\"" -msgstr "" -"Przepraszamy, żaden dokument nie pasuje do \"<em>%(query_string)s</em>\"" +msgstr "Przepraszamy, żaden dokument nie pasuje do \"<em>%(query_string)s</em>\"" #: templates/wagtaildocs/documents/_file_field.html:5 msgid "Change document:" @@ -141,11 +130,34 @@ msgstr "Przesłano" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "Nie przesłano żadnych dokumentów. Czemu nie <a href=\"%(wagtaildocs_add_document_url)s\">dodać jednego teraz</a>?" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"Nie przesłano żadnych dokumentów. Czemu nie <a href=" -"\"%(wagtaildocs_add_document_url)s\">dodać jednego teraz</a>?" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -155,22 +167,22 @@ msgstr "Wyczyść wybór" msgid "Choose another document" msgstr "Wybierz inny dokument" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "Szukaj dokumentów" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Dodano dokument '{0}'." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "Dokument nie mógł zostać zapisany z powodu błędów." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Uaktualniono dokument '{0}'" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Usunięto dokument '{0}'" diff --git a/wagtail/wagtaildocs/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..2ed7e9aaf Binary files /dev/null and b/wagtail/wagtaildocs/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..c352afd29 --- /dev/null +++ b/wagtail/wagtaildocs/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,196 @@ +# 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. +# +# Translators: +# Thiago Cangussu <cangussu.thg@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-03 01:53+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" +"Language: pt_PT\n" + +#: models.py:21 templates/wagtaildocs/documents/list.html:11 +#: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 +msgid "Title" +msgstr "Título" + +#: models.py:22 templates/wagtaildocs/documents/list.html:17 +msgid "File" +msgstr "Ficheiro" + +#: models.py:26 +msgid "Tags" +msgstr "Etiquetas" + +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 +msgid "Documents" +msgstr "Documentos" + +#: templates/wagtaildocs/chooser/chooser.html:2 +#: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:11 +msgid "Choose a document" +msgstr "Escolher um documento" + +#: templates/wagtaildocs/chooser/chooser.html:7 +#: templates/wagtaildocs/chooser/chooser.html:19 +msgid "Search" +msgstr "Procurar" + +#: templates/wagtaildocs/chooser/chooser.html:8 +msgid "Upload" +msgstr "Enviar" + +#: templates/wagtaildocs/chooser/chooser.html:34 +#: templates/wagtaildocs/documents/add.html:25 +#: templates/wagtaildocs/documents/edit.html:29 +msgid "Save" +msgstr "Guardar" + +#: templates/wagtaildocs/chooser/results.html:5 +#: templates/wagtaildocs/documents/results.html:5 +#, python-format +msgid "" +"\n" +" There is one match\n" +" " +msgid_plural "" +"\n" +" There are %(counter)s matches\n" +" " +msgstr[0] "" +"\n" +" Existe uma correspondência\n" +" " +msgstr[1] "" +"\n" +" Existem %(counter)s correspondências\n" +" " + +#: templates/wagtaildocs/chooser/results.html:12 +msgid "Latest documents" +msgstr "Últimos documentos" + +#: templates/wagtaildocs/chooser/results.html:19 +#: templates/wagtaildocs/documents/results.html:18 +#, python-format +msgid "Sorry, no documents match \"<em>%(query_string)s</em>\"" +msgstr "Desculpe, nenhum documento corresponde a \"<em>%(query_string)s</em>\"" + +#: templates/wagtaildocs/documents/_file_field.html:5 +msgid "Change document:" +msgstr "Alterar documento" + +#: templates/wagtaildocs/documents/add.html:4 +#: templates/wagtaildocs/documents/index.html:17 +msgid "Add a document" +msgstr "Adicionar um documento" + +#: templates/wagtaildocs/documents/add.html:15 +msgid "Add document" +msgstr "Adicionar documento" + +#: templates/wagtaildocs/documents/confirm_delete.html:3 +#, python-format +msgid "Delete %(title)s" +msgstr "Eliminar %(title)s" + +#: templates/wagtaildocs/documents/confirm_delete.html:6 +#: templates/wagtaildocs/documents/edit.html:29 +msgid "Delete document" +msgstr "Eliminar documento" + +#: templates/wagtaildocs/documents/confirm_delete.html:10 +msgid "Are you sure you want to delete this document?" +msgstr "Tem certeza que quer eliminar este documento?" + +#: templates/wagtaildocs/documents/confirm_delete.html:13 +msgid "Yes, delete" +msgstr "Sim, eliminar" + +#: templates/wagtaildocs/documents/edit.html:4 +#, python-format +msgid "Editing %(title)s" +msgstr "Editando %(title)s" + +#: templates/wagtaildocs/documents/edit.html:15 +msgid "Editing" +msgstr "Editando" + +#: templates/wagtaildocs/documents/list.html:21 +#: templates/wagtaildocs/documents/list.html:24 +msgid "Uploaded" +msgstr "Enviado" + +#: templates/wagtaildocs/documents/results.html:21 +#, python-format +msgid "" +"You haven't uploaded any documents. Why not <a href=" +"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "" +"Ainda não enviou nenhum documento. Porque não <a href=" +"\"%(wagtaildocs_add_document_url)s\">enviar um agora</a>?" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "Utilização de %(title)s" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "Utilização de" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "Ascendente" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "Tipo" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "Estado" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" +msgstr "Editar esta ágina" + +#: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 +msgid "Clear choice" +msgstr "Limpar escolha" + +#: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:10 +msgid "Choose another document" +msgstr "Escolher outro documento" + +#: views/documents.py:37 views/documents.py:46 +msgid "Search documents" +msgstr "Procurar documentos" + +#: views/documents.py:86 +msgid "Document '{0}' added." +msgstr "Documento '{0}' adicionado." + +#: views/documents.py:89 views/documents.py:118 +msgid "The document could not be saved due to errors." +msgstr "O documento não pôde ser guardado devido a erros." + +#: views/documents.py:115 +msgid "Document '{0}' updated" +msgstr "Documento '{0}' atualizado" + +#: views/documents.py:137 +msgid "Document '{0}' deleted." +msgstr "Documento '{0}' apagado." diff --git a/wagtail/wagtaildocs/locale/ro/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/ro/LC_MESSAGES/django.mo index 88f0d2144..5e8f2dfa6 100644 Binary files a/wagtail/wagtaildocs/locale/ro/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/ro/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/ro/LC_MESSAGES/django.po index 196bf3a35..15b64f26e 100644 --- a/wagtail/wagtaildocs/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/ro/LC_MESSAGES/django.po @@ -1,39 +1,38 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# zerolab, 2014 +# Dan Braghis, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-18 13:20+0000\n" -"Last-Translator: zerolab\n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" -"language/ro/)\n" -"Language: ro\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "Titlu" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "Fișier" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "Etichete" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "Documente" @@ -68,15 +67,9 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Există o potrivire" -msgstr[1] "" -"\n" -"Sunt %(counter)s potriviri" -msgstr[2] "" -"\n" -"Sunt %(counter)s potriviri" +msgstr[0] "\nExistă o potrivire" +msgstr[1] "\nSunt %(counter)s potriviri" +msgstr[2] "\nSunt %(counter)s potriviri" #: templates/wagtaildocs/chooser/results.html:12 msgid "Latest documents" @@ -86,9 +79,7 @@ msgstr "Documente recente" #: templates/wagtaildocs/documents/results.html:18 #, python-format msgid "Sorry, no documents match \"<em>%(query_string)s</em>\"" -msgstr "" -"Ne pare rău, \"<em>%(query_string)s</em>\" nu se potrivește cu nici un " -"document" +msgstr "Ne pare rău, \"<em>%(query_string)s</em>\" nu se potrivește cu nici un document" #: templates/wagtaildocs/documents/_file_field.html:5 msgid "Change document:" @@ -138,11 +129,34 @@ msgstr "Încărcat" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "Nu ați încărcat nici un document. De ce să nu <a href=\"%(wagtaildocs_add_document_url)s\">adăugați unul</a>?" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"Nu ați încărcat nici un document. De ce să nu <a href=" -"\"%(wagtaildocs_add_document_url)s\">adăugați unul</a>?" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -152,22 +166,22 @@ msgstr "Curăță selecție" msgid "Choose another document" msgstr "Alege alt document" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "Caută documente" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "Documentul '{0}' a fost adăugat." -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "Documentul nu a fost salvat din cauza erorilor." -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "Documentul '{0}' a fost actualizat." -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "Documentul '{0}' a fost șters." diff --git a/wagtail/wagtaildocs/locale/zh/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/zh/LC_MESSAGES/django.mo index 550cc93de..358bef2f4 100644 Binary files a/wagtail/wagtaildocs/locale/zh/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/zh/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/zh/LC_MESSAGES/django.po index 3e29642cd..3ad210f18 100644 --- a/wagtail/wagtaildocs/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/zh/LC_MESSAGES/django.po @@ -1,37 +1,37 @@ # 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: 2014-07-11 10:42+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" -"zh/)\n" -"Language: zh\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/zh/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "标题" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "文件" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "标签" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "文档" @@ -126,11 +126,34 @@ msgstr "已上传" #: templates/wagtaildocs/documents/results.html:21 #, python-format msgid "" -"You haven't uploaded any documents. Why not <a href=" -"\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +"You haven't uploaded any documents. Why not <a " +"href=\"%(wagtaildocs_add_document_url)s\">upload one now</a>?" +msgstr "你没有上传任何文档。 为什么不 <a href=\"%(wagtaildocs_add_document_url)s\">上传一份</a>?" + +#: templates/wagtaildocs/documents/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" msgstr "" -"你没有上传任何文档。 为什么不 <a href=\"%(wagtaildocs_add_document_url)s\">上" -"传一份</a>?" #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" @@ -140,22 +163,22 @@ msgstr "清除选择" msgid "Choose another document" msgstr "选择另外一份文档" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "文档'{0}'已添加" -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "有错,文档无法保存。" -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "文档'{0}'已更新" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "文档'{0}'已删除" diff --git a/wagtail/wagtaildocs/locale/zh_TW/LC_MESSAGES/django.mo b/wagtail/wagtaildocs/locale/zh_TW/LC_MESSAGES/django.mo index 65fb219cc..45d304e3d 100644 Binary files a/wagtail/wagtaildocs/locale/zh_TW/LC_MESSAGES/django.mo and b/wagtail/wagtaildocs/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtaildocs/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtaildocs/locale/zh_TW/LC_MESSAGES/django.po index d11b715e5..cb2c41a37 100644 --- a/wagtail/wagtaildocs/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtaildocs/locale/zh_TW/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:42+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" @@ -17,20 +17,21 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: models.py:20 templates/wagtaildocs/documents/list.html:11 +#: models.py:21 templates/wagtaildocs/documents/list.html:11 #: templates/wagtaildocs/documents/list.html:14 +#: templates/wagtaildocs/documents/usage.html:16 msgid "Title" msgstr "標題" -#: models.py:21 templates/wagtaildocs/documents/list.html:17 +#: models.py:22 templates/wagtaildocs/documents/list.html:17 msgid "File" msgstr "文件" -#: models.py:25 +#: models.py:26 msgid "Tags" msgstr "標籤" -#: wagtail_hooks.py:23 templates/wagtaildocs/documents/index.html:16 +#: wagtail_hooks.py:24 templates/wagtaildocs/documents/index.html:16 msgid "Documents" msgstr "文件" @@ -136,6 +137,31 @@ msgstr "" "你沒有上傳任何文件。 為什麼不 <a href=\"%(wagtaildocs_add_document_url)s\">上" "傳一份</a>?" +#: templates/wagtaildocs/documents/usage.html:3 +#, fuzzy, python-format +msgid "Usage of %(title)s" +msgstr "刪除 %(title)s" + +#: templates/wagtaildocs/documents/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtaildocs/documents/usage.html:26 +msgid "Edit this page" +msgstr "" + #: templates/wagtaildocs/edit_handlers/document_chooser_panel.html:9 msgid "Clear choice" msgstr "清除選擇" @@ -144,22 +170,22 @@ msgstr "清除選擇" msgid "Choose another document" msgstr "選擇另外一份文件" -#: views/documents.py:36 views/documents.py:45 +#: views/documents.py:37 views/documents.py:46 msgid "Search documents" msgstr "搜尋文件" -#: views/documents.py:85 +#: views/documents.py:86 msgid "Document '{0}' added." msgstr "文件 '{0}' 已加入" -#: views/documents.py:88 views/documents.py:117 +#: views/documents.py:89 views/documents.py:118 msgid "The document could not be saved due to errors." msgstr "這文件因有錯誤而無法建立。" -#: views/documents.py:114 +#: views/documents.py:115 msgid "Document '{0}' updated" msgstr "文件 '{0}' 已更新" -#: views/documents.py:136 +#: views/documents.py:137 msgid "Document '{0}' deleted." msgstr "文件 '{0}' 已刪除" diff --git a/wagtail/wagtaildocs/models.py b/wagtail/wagtaildocs/models.py index 513c0ede0..5f9b374f2 100644 --- a/wagtail/wagtaildocs/models.py +++ b/wagtail/wagtaildocs/models.py @@ -12,7 +12,8 @@ from django.utils.translation import ugettext_lazy as _ from django.utils.encoding import python_2_unicode_compatible from wagtail.wagtailadmin.taggable import TagSearchable -from wagtail.wagtailsearch import indexed +from wagtail.wagtailadmin.utils import get_object_usage +from wagtail.wagtailsearch import index @python_2_unicode_compatible @@ -25,7 +26,7 @@ class Document(models.Model, TagSearchable): tags = TaggableManager(help_text=None, blank=True, verbose_name=_('Tags')) search_fields = TagSearchable.search_fields + ( - indexed.FilterField('uploaded_by_user'), + index.FilterField('uploaded_by_user'), ) def __str__(self): @@ -47,6 +48,14 @@ class Document(models.Model, TagSearchable): def url(self): return reverse('wagtaildocs_serve', args=[self.id, self.filename]) + def get_usage(self): + return get_object_usage(self) + + @property + def usage_url(self): + return reverse('wagtaildocs_document_usage', + args=(self.id,)) + def is_editable_by_user(self, user): if user.has_perm('wagtaildocs.change_document'): # user has global permission to change documents diff --git a/wagtail/wagtaildocs/templates/wagtaildocs/documents/edit.html b/wagtail/wagtaildocs/templates/wagtaildocs/documents/edit.html index 55734fbbd..62b9df514 100644 --- a/wagtail/wagtaildocs/templates/wagtaildocs/documents/edit.html +++ b/wagtail/wagtaildocs/templates/wagtaildocs/documents/edit.html @@ -13,7 +13,7 @@ {% block content %} {% trans "Editing" as editing_str %} - {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=document.title icon="doc-full-inverse" %} + {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=document.title icon="doc-full-inverse" usage_object=document %} <div class="nice-padding"> <form action="{% url 'wagtaildocs_edit_document' document.id %}" method="POST" enctype="multipart/form-data"> @@ -30,6 +30,6 @@ </ul> </form> - + </div> {% endblock %} diff --git a/wagtail/wagtaildocs/templates/wagtaildocs/documents/usage.html b/wagtail/wagtaildocs/templates/wagtaildocs/documents/usage.html new file mode 100644 index 000000000..01daa48fb --- /dev/null +++ b/wagtail/wagtaildocs/templates/wagtaildocs/documents/usage.html @@ -0,0 +1,49 @@ +{% extends "wagtailadmin/base.html" %} +{% load i18n %} +{% block titletag %}{% blocktrans with title=document.title %}Usage of {{ title }}{% endblocktrans %}{% endblock %} +{% block content %} + {% trans "Usage of" as usage_str %} + {% include "wagtailadmin/shared/header.html" with title=usage_str subtitle=document.title %} + + <div class="nice-padding"> + <table class="listing"> + <col /> + <col width="30%"/> + <col width="15%"/> + <col width="15%"/> + <thead> + <tr> + <th class="title">{% trans "Title" %}</th> + <th>{% trans "Parent" %}</th> + <th>{% trans "Type" %}</th> + <th>{% trans "Status" %}</th> + </tr> + </thead> + <tbody> + {% for page in used_by %} + <tr> + <td class="title" valign="top"> + <h2><a href="{% url 'wagtailadmin_pages_edit' page.id %}" title="{% trans 'Edit this page' %}">{{ page.title }}</a></h2> + </td> + <td> + {% if page.get_parent %} + <a href="{% url 'wagtailadmin_explore' page.get_parent.id %}">{{ page.get_parent.title }}</a> + {% endif %} + </td> + <td> + {{ page.content_type.model_class.get_verbose_name }} + </td> + <td> + {% if page.live %} + <a href="{{ page.url }}" target="_blank" class="status-tag {% if page.status_string != "draft" %}primary{% endif %}">{{ page.status_string }}</a> + {% else %} + <span class="status-tag {% if page.status_string != "draft" %}primary{% endif %}">{{ page.status_string }}</span> + {% endif %} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + {% include "wagtailadmin/shared/pagination_nav.html" with items=used_by linkurl="-" %} +{% endblock %} diff --git a/wagtail/wagtaildocs/tests.py b/wagtail/wagtaildocs/tests.py index b0f49fde5..5592635f2 100644 --- a/wagtail/wagtaildocs/tests.py +++ b/wagtail/wagtaildocs/tests.py @@ -5,8 +5,13 @@ from django.contrib.auth import get_user_model from django.contrib.auth.models import Group, Permission from django.core.urlresolvers import reverse from django.core.files.base import ContentFile +from django.test.utils import override_settings from wagtail.tests.utils import WagtailTestUtils +from wagtail.wagtailcore.models import Page + +from wagtail.tests.models import EventPage, EventPageRelatedLink +from wagtail.wagtaildocs.models import Document from wagtail.wagtaildocs import models @@ -316,3 +321,99 @@ class TestDocumentFilenameProperties(TestCase): def tearDown(self): self.document.delete() self.extensionless_document.delete() + + +class TestUsageCount(TestCase, WagtailTestUtils): + fixtures = ['wagtail/tests/fixtures/test.json'] + + def setUp(self): + self.login() + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_unused_document_usage_count(self): + doc = Document.objects.get(id=1) + self.assertEqual(doc.get_usage().count(), 0) + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_used_document_usage_count(self): + doc = Document.objects.get(id=1) + page = EventPage.objects.get(id=4) + event_page_related_link = EventPageRelatedLink() + event_page_related_link.page = page + event_page_related_link.link_document = doc + event_page_related_link.save() + self.assertEqual(doc.get_usage().count(), 1) + + def test_usage_count_does_not_appear(self): + doc = Document.objects.get(id=1) + page = EventPage.objects.get(id=4) + event_page_related_link = EventPageRelatedLink() + event_page_related_link.page = page + event_page_related_link.link_document = doc + event_page_related_link.save() + response = self.client.get(reverse('wagtaildocs_edit_document', + args=(1,))) + self.assertNotContains(response, 'Used 1 time') + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_usage_count_appears(self): + doc = Document.objects.get(id=1) + page = EventPage.objects.get(id=4) + event_page_related_link = EventPageRelatedLink() + event_page_related_link.page = page + event_page_related_link.link_document = doc + event_page_related_link.save() + response = self.client.get(reverse('wagtaildocs_edit_document', + args=(1,))) + self.assertContains(response, 'Used 1 time') + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_usage_count_zero_appears(self): + response = self.client.get(reverse('wagtaildocs_edit_document', + args=(1,))) + self.assertContains(response, 'Used 0 times') + + +class TestGetUsage(TestCase, WagtailTestUtils): + fixtures = ['wagtail/tests/fixtures/test.json'] + + def setUp(self): + self.login() + + def test_document_get_usage_not_enabled(self): + doc = Document.objects.get(id=1) + self.assertEqual(list(doc.get_usage()), []) + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_unused_document_get_usage(self): + doc = Document.objects.get(id=1) + self.assertEqual(list(doc.get_usage()), []) + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_used_document_get_usage(self): + doc = Document.objects.get(id=1) + page = EventPage.objects.get(id=4) + event_page_related_link = EventPageRelatedLink() + event_page_related_link.page = page + event_page_related_link.link_document = doc + event_page_related_link.save() + self.assertTrue(issubclass(Page, type(doc.get_usage()[0]))) + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_usage_page(self): + doc = Document.objects.get(id=1) + page = EventPage.objects.get(id=4) + event_page_related_link = EventPageRelatedLink() + event_page_related_link.page = page + event_page_related_link.link_document = doc + event_page_related_link.save() + response = self.client.get(reverse('wagtaildocs_document_usage', + args=(1,))) + self.assertContains(response, 'Christmas') + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_usage_page_no_usage(self): + response = self.client.get(reverse('wagtaildocs_document_usage', + args=(1,))) + # There's no usage so there should be no table rows + self.assertRegex(response.content, b'<tbody>(\s|\n)*</tbody>') diff --git a/wagtail/wagtaildocs/views/documents.py b/wagtail/wagtaildocs/views/documents.py index de72ee3b6..488e2ff9a 100644 --- a/wagtail/wagtaildocs/views/documents.py +++ b/wagtail/wagtaildocs/views/documents.py @@ -5,6 +5,7 @@ from django.contrib.auth.decorators import permission_required from django.core.exceptions import PermissionDenied from django.utils.translation import ugettext as _ from django.views.decorators.vary import vary_on_headers +from django.core.urlresolvers import reverse from wagtail.wagtailadmin.forms import SearchForm @@ -120,7 +121,7 @@ def edit(request, document_id): return render(request, "wagtaildocs/documents/edit.html", { 'document': doc, - 'form': form, + 'form': form }) @@ -139,3 +140,24 @@ def delete(request, document_id): return render(request, "wagtaildocs/documents/confirm_delete.html", { 'document': doc, }) + + +@permission_required('wagtailadmin.access_admin') +def usage(request, document_id): + doc = get_object_or_404(Document, id=document_id) + + # Pagination + p = request.GET.get('p', 1) + paginator = Paginator(doc.get_usage(), 20) + + try: + used_by = paginator.page(p) + except PageNotAnInteger: + used_by = paginator.page(1) + except EmptyPage: + used_by = paginator.page(paginator.num_pages) + + return render(request, "wagtaildocs/documents/usage.html", { + 'document': doc, + 'used_by': used_by + }) diff --git a/wagtail/wagtailembeds/locale/bg/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/bg/LC_MESSAGES/django.mo index 674b95ad4..47f0416d2 100644 Binary files a/wagtail/wagtailembeds/locale/bg/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/bg/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/bg/LC_MESSAGES/django.po index 356ac22c2..c90c66ff4 100644 --- a/wagtail/wagtailembeds/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/bg/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-24 20:14+0000\n" "Last-Translator: LyuboslavPetrov <petrov.lyuboslav@gmail.com>\n" "Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" diff --git a/wagtail/wagtailembeds/locale/ca/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/ca/LC_MESSAGES/django.mo index 607ce39f7..4843837b9 100644 Binary files a/wagtail/wagtailembeds/locale/ca/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/ca/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/ca/LC_MESSAGES/django.po index 0628fc81a..f1605c473 100644 --- a/wagtail/wagtailembeds/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/ca/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-22 12:45+0000\n" "Last-Translator: Lloople <d.lloople@gmail.com>\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" diff --git a/wagtail/wagtailembeds/locale/de/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/de/LC_MESSAGES/django.mo index 32837a283..f7d7daafc 100644 Binary files a/wagtail/wagtailembeds/locale/de/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/de/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/de/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/de/LC_MESSAGES/django.po index 5cb1d5781..d608913fb 100644 --- a/wagtail/wagtailembeds/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-25 17:30+0000\n" "Last-Translator: jspielmann <j@spielmannsolutions.com>\n" "Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" diff --git a/wagtail/wagtailembeds/locale/el/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/el/LC_MESSAGES/django.mo index 6b8bee4e2..6d451a76b 100644 Binary files a/wagtail/wagtailembeds/locale/el/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/el/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/el/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/el/LC_MESSAGES/django.po index a4fdd0b7d..cbc6c634b 100644 --- a/wagtail/wagtailembeds/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/el/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-22 12:34+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" diff --git a/wagtail/wagtailembeds/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/en/LC_MESSAGES/django.mo index 4b726f7d6..3b83aafe9 100644 Binary files a/wagtail/wagtailembeds/locale/en/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/en/LC_MESSAGES/django.po index 6643b00ee..d656d1d63 100644 --- a/wagtail/wagtailembeds/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+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" diff --git a/wagtail/wagtailembeds/locale/es/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/es/LC_MESSAGES/django.mo index 3189ac588..fab6575b9 100644 Binary files a/wagtail/wagtailembeds/locale/es/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/es/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/es/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/es/LC_MESSAGES/django.po index 109d5fb92..05e4915e1 100644 --- a/wagtail/wagtailembeds/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/es/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-27 09:34+0000\n" "Last-Translator: fooflare <amos.oviedo@gmail.com>\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" diff --git a/wagtail/wagtailembeds/locale/eu/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/eu/LC_MESSAGES/django.mo index 7a9b7b573..d2ae4a35f 100644 Binary files a/wagtail/wagtailembeds/locale/eu/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/eu/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/eu/LC_MESSAGES/django.po index 058a717f0..0b62bb6eb 100644 --- a/wagtail/wagtailembeds/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/eu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-24 22:36+0000\n" "Last-Translator: tomdyson <tom@torchbox.com>\n" "Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" diff --git a/wagtail/wagtailembeds/locale/fr/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/fr/LC_MESSAGES/django.mo index 38a3ca80b..5f756ed8c 100644 Binary files a/wagtail/wagtailembeds/locale/fr/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/fr/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/fr/LC_MESSAGES/django.po index 1cd2eed64..dce212991 100644 --- a/wagtail/wagtailembeds/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-03-18 22:04+0000\n" "Last-Translator: nahuel\n" "Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" diff --git a/wagtail/wagtailembeds/locale/gl/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/gl/LC_MESSAGES/django.mo index dd0288afb..189ad2853 100644 Binary files a/wagtail/wagtailembeds/locale/gl/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/gl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/gl/LC_MESSAGES/django.po index 6d027c5c1..bc48c912b 100644 --- a/wagtail/wagtailembeds/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/gl/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-03-23 10:32+0000\n" "Last-Translator: fooflare <amos.oviedo@gmail.com>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" diff --git a/wagtail/wagtailembeds/locale/mn/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/mn/LC_MESSAGES/django.mo index f18b1b35f..64a560793 100644 Binary files a/wagtail/wagtailembeds/locale/mn/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/mn/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/mn/LC_MESSAGES/django.po index 8f18fcace..a910cdb90 100644 --- a/wagtail/wagtailembeds/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/mn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-03-01 17:11+0000\n" "Last-Translator: delgermurun <pdelgermurun@gmail.com>\n" "Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" diff --git a/wagtail/wagtailembeds/locale/pl/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/pl/LC_MESSAGES/django.mo index 9f3bbcc54..3d76ba247 100644 Binary files a/wagtail/wagtailembeds/locale/pl/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/pl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/pl/LC_MESSAGES/django.po index 4112c515b..1b4b89999 100644 --- a/wagtail/wagtailembeds/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/pl/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-23 10:22+0000\n" "Last-Translator: utek <mail@utek.pl>\n" "Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" diff --git a/wagtail/wagtailembeds/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..0236ea963 Binary files /dev/null and b/wagtail/wagtailembeds/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..9b6c937f6 --- /dev/null +++ b/wagtail/wagtailembeds/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,57 @@ +# 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. +# +# Translators: +# Thiago Cangussu <cangussu.thg@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" +"PO-Revision-Date: 2014-08-03 01:53+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" +"Language: pt_PT\n" + +#: forms.py:11 +msgid "Please enter a valid URL" +msgstr "Por favor introduza uma URL válida" + +#: forms.py:15 +msgid "URL" +msgstr "URL" + +#: templates/wagtailembeds/chooser/chooser.html:3 +msgid "Insert embed" +msgstr "Inserir embed" + +#: templates/wagtailembeds/chooser/chooser.html:14 +msgid "Insert" +msgstr "Inserir" + +#: views/chooser.py:33 +msgid "" +"There seems to be a problem with your embedly API key. Please check your " +"settings." +msgstr "" +"Parece existir um problema com a sua chave API de embedly. Por favor " +"verifique as suas configurações." + +#: views/chooser.py:35 +msgid "Cannot find an embed for this URL." +msgstr "Não consigo encontrar um embed para esta URL." + +#: views/chooser.py:37 +msgid "" +"There seems to be an error with Embedly while trying to embed this URL. " +"Please try again later." +msgstr "" +"Parece que houve um erro em Embedly durante a tentativa de embed esta URL. " +"Por favor tente novamente." diff --git a/wagtail/wagtailembeds/locale/ro/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/ro/LC_MESSAGES/django.mo index b22bd1bb0..1dd734c80 100644 Binary files a/wagtail/wagtailembeds/locale/ro/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/ro/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/ro/LC_MESSAGES/django.po index 66f8f4838..38e848315 100644 --- a/wagtail/wagtailembeds/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/ro/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-24 22:27+0000\n" "Last-Translator: zerolab\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" diff --git a/wagtail/wagtailembeds/locale/zh/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/zh/LC_MESSAGES/django.mo index 205e6094b..321a4565c 100644 Binary files a/wagtail/wagtailembeds/locale/zh/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/zh/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/zh/LC_MESSAGES/django.po index c5cd2d54d..4514379b6 100644 --- a/wagtail/wagtailembeds/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-24 17:34+0000\n" "Last-Translator: tomdyson <tom@torchbox.com>\n" "Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" diff --git a/wagtail/wagtailembeds/locale/zh_TW/LC_MESSAGES/django.mo b/wagtail/wagtailembeds/locale/zh_TW/LC_MESSAGES/django.mo index 7a51d6e23..298bbc5de 100644 Binary files a/wagtail/wagtailembeds/locale/zh_TW/LC_MESSAGES/django.mo and b/wagtail/wagtailembeds/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailembeds/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtailembeds/locale/zh_TW/LC_MESSAGES/django.po index 4a6b9aba2..df6f4e891 100644 --- a/wagtail/wagtailembeds/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtailembeds/locale/zh_TW/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:43+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+0100\n" "PO-Revision-Date: 2014-02-24 17:34+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" diff --git a/wagtail/wagtailforms/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtailforms/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 000000000..3b83aafe9 Binary files /dev/null and b/wagtail/wagtailforms/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailforms/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailforms/locale/en/LC_MESSAGES/django.po index 3c183ff0f..4b64a68e9 100644 --- a/wagtail/wagtailforms/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailforms/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:44+0000\n" +"POT-Creation-Date: 2014-08-01 16:38+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" @@ -79,7 +79,7 @@ msgstr "" msgid "Optional - form submissions will be emailed to this address" msgstr "" -#: wagtail_hooks.py:22 templates/wagtailforms/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailforms/index.html:3 #: templates/wagtailforms/index.html:6 msgid "Forms" msgstr "" diff --git a/wagtail/wagtailimages/admin_urls.py b/wagtail/wagtailimages/admin_urls.py new file mode 100644 index 000000000..44bc61224 --- /dev/null +++ b/wagtail/wagtailimages/admin_urls.py @@ -0,0 +1,23 @@ +from django.conf.urls import url + +from wagtail.wagtailimages.views import images, chooser, multiple + + +urlpatterns = [ + url(r'^$', images.index, name='wagtailimages_index'), + url(r'^(\d+)/$', images.edit, name='wagtailimages_edit_image'), + url(r'^(\d+)/delete/$', images.delete, name='wagtailimages_delete_image'), + url(r'^(\d+)/generate_url/$', images.url_generator, name='wagtailimages_url_generator'), + url(r'^(\d+)/generate_url/(.*)/$', images.generate_url, name='wagtailimages_generate_url'), + url(r'^add/$', images.add, name='wagtailimages_add_image'), + url(r'^usage/(\d+)/$', images.usage, name='wagtailimages_image_usage'), + + url(r'^multiple/add/$', multiple.add, name='wagtailimages_add_multiple'), + url(r'^multiple/(\d+)/$', multiple.edit, name='wagtailimages_edit_multiple'), + url(r'^multiple/(\d+)/delete/$', multiple.delete, name='wagtailimages_delete_multiple'), + + url(r'^chooser/$', chooser.chooser, name='wagtailimages_chooser'), + url(r'^chooser/(\d+)/$', chooser.image_chosen, name='wagtailimages_image_chosen'), + url(r'^chooser/upload/$', chooser.chooser_upload, name='wagtailimages_chooser_upload'), + url(r'^chooser/(\d+)/select_format/$', chooser.chooser_select_format, name='wagtailimages_chooser_select_format'), +] diff --git a/wagtail/wagtailimages/backends/base.py b/wagtail/wagtailimages/backends/base.py index 7024c358d..a374f6ce1 100644 --- a/wagtail/wagtailimages/backends/base.py +++ b/wagtail/wagtailimages/backends/base.py @@ -1,5 +1,7 @@ from django.conf import settings +from wagtail.wagtailimages.utils import crop + class BaseImageBackend(object): def __init__(self, params): @@ -27,10 +29,34 @@ class BaseImageBackend(object): """ raise NotImplementedError('subclasses of BaseImageBackend must provide an resize() method') - def crop_to_centre(self, image, size): - raise NotImplementedError('subclasses of BaseImageBackend must provide a crop_to_centre() method') + def image_data_as_rgb(self, image): + raise NotImplementedError('subclasses of BaseImageBackend must provide an image_data_as_rgb() method') - def resize_to_max(self, image, size): + def crop(self, image, crop_box): + raise NotImplementedError('subclasses of BaseImageBackend must provide a crop() method') + + def crop_to_centre(self, image, size): + crop_box = crop.crop_to_centre(image.size, size) + if crop_box.size != image.size: + return self.crop(image, crop_box) + else: + return image + + def crop_to_point(self, image, size, focal_point): + crop_box = crop.crop_to_point(image.size, size, focal_point) + + # Don't crop if we don't need to + if crop_box.size != image.size: + image = self.crop(image, crop_box) + + # If the focal points are too large, the cropping system may not + # crop it fully, resize the image if this has happened: + if crop_box.size != size: + image = self.resize_to_fill(image, size) + + return image + + def resize_to_max(self, image, size, focal_point=None): """ Resize image down to fit within the given dimensions, preserving aspect ratio. Will leave image unchanged if it's already within those dimensions. @@ -54,7 +80,7 @@ class BaseImageBackend(object): return self.resize(image, final_size) - def resize_to_min(self, image, size): + def resize_to_min(self, image, size, focal_point=None): """ Resize image down to cover the given dimensions, preserving aspect ratio. Will leave image unchanged if width or height is already within those limits. @@ -78,7 +104,7 @@ class BaseImageBackend(object): return self.resize(image, final_size) - def resize_to_width(self, image, target_width): + def resize_to_width(self, image, target_width, focal_point=None): """ Resize image down to the given width, preserving aspect ratio. Will leave image unchanged if it's already within that width. @@ -94,7 +120,7 @@ class BaseImageBackend(object): return self.resize(image, final_size) - def resize_to_height(self, image, target_height): + def resize_to_height(self, image, target_height, focal_point=None): """ Resize image down to the given height, preserving aspect ratio. Will leave image unchanged if it's already within that height. @@ -110,16 +136,18 @@ class BaseImageBackend(object): return self.resize(image, final_size) - def resize_to_fill(self, image, size): + def resize_to_fill(self, image, size, focal_point=None): """ Resize down and crop image to fill the given dimensions. Most suitable for thumbnails. (The final image will match the requested size, unless one or the other dimension is already smaller than the target size) """ - resized_image = self.resize_to_min(image, size) - return self.crop_to_centre(resized_image, size) + if focal_point is not None: + return self.crop_to_point(image, size, focal_point) + else: + resized_image = self.resize_to_min(image, size) + return self.crop_to_centre(resized_image, size) - - def no_operation(self, image, param): + def no_operation(self, image, param, focal_point=None): """Return the image unchanged""" return image diff --git a/wagtail/wagtailimages/backends/pillow.py b/wagtail/wagtailimages/backends/pillow.py index 96976c277..a1963f931 100644 --- a/wagtail/wagtailimages/backends/pillow.py +++ b/wagtail/wagtailimages/backends/pillow.py @@ -1,8 +1,9 @@ from __future__ import absolute_import -from .base import BaseImageBackend import PIL.Image +from wagtail.wagtailimages.backends.base import BaseImageBackend + class PillowBackend(BaseImageBackend): def __init__(self, params): @@ -20,19 +21,15 @@ class PillowBackend(BaseImageBackend): image = image.convert('RGB') return image.resize(size, PIL.Image.ANTIALIAS) - def crop_to_centre(self, image, size): - (original_width, original_height) = image.size - (target_width, target_height) = size + def crop(self, image, crop_box): + return image.crop(crop_box) - # final dimensions should not exceed original dimensions - final_width = min(original_width, target_width) - final_height = min(original_height, target_height) + def image_data_as_rgb(self, image): + # https://github.com/thumbor/thumbor/blob/f52360dc96eedd9fc914fcf19eaf2358f7e2480c/thumbor/engines/pil.py#L206-L215 + if image.mode not in ['RGB', 'RGBA']: + if 'A' in image.mode: + image = image.convert('RGBA') + else: + image = image.convert('RGB') - if final_width == original_width and final_height == original_height: - return image - - left = (original_width - final_width) / 2 - top = (original_height - final_height) / 2 - return image.crop( - (left, top, left + final_width, top + final_height) - ) + return image.mode, image.tostring() diff --git a/wagtail/wagtailimages/backends/wand.py b/wagtail/wagtailimages/backends/wand.py index 91f2d255a..3c41f60c1 100644 --- a/wagtail/wagtailimages/backends/wand.py +++ b/wagtail/wagtailimages/backends/wand.py @@ -1,9 +1,10 @@ from __future__ import absolute_import -from .base import BaseImageBackend from wand.image import Image from wand.api import library +from wagtail.wagtailimages.backends.base import BaseImageBackend + class WandBackend(BaseImageBackend): def __init__(self, params): @@ -24,22 +25,17 @@ class WandBackend(BaseImageBackend): new_image.resize(size[0], size[1]) return new_image - def crop_to_centre(self, image, size): - (original_width, original_height) = image.size - (target_width, target_height) = size - - # final dimensions should not exceed original dimensions - final_width = min(original_width, target_width) - final_height = min(original_height, target_height) - - if final_width == original_width and final_height == original_height: - return image - - left = (original_width - final_width) / 2 - top = (original_height - final_height) / 2 - + def crop(self, image, crop_box): new_image = image.clone() new_image.crop( - left=left, top=top, right=left + final_width, bottom=top + final_height + left=crop_box[0], top=crop_box[1], right=crop_box[2], bottom=crop_box[3] ) return new_image + + def image_data_as_rgb(self, image): + # Only return image data if this image is not animated + if image.animation: + return + + return 'RGB', image.make_blob('RGB') + diff --git a/wagtail/wagtailimages/forms.py b/wagtail/wagtailimages/forms.py index 01075f533..5f98fd1b0 100644 --- a/wagtail/wagtailimages/forms.py +++ b/wagtail/wagtailimages/forms.py @@ -1,5 +1,6 @@ from django import forms from django.forms.models import modelform_factory +from django.utils.translation import ugettext as _ from wagtail.wagtailimages.models import get_image_model from wagtail.wagtailimages.formats import get_image_formats @@ -29,3 +30,19 @@ class ImageInsertionForm(forms.Form): widget=forms.RadioSelect ) alt_text = forms.CharField() + + +class URLGeneratorForm(forms.Form): + filter_method = forms.ChoiceField( + label=_("Filter"), + choices=( + ('original', _("Original size")), + ('width', _("Resize to width")), + ('height', _("Resize to height")), + ('min', _("Resize to min")), + ('max', _("Resize to max")), + ('fill', _("Resize to fill")), + ), + ) + width = forms.IntegerField(_("Width"), min_value=0) + height = forms.IntegerField(_("Height"), min_value=0) diff --git a/wagtail/wagtailimages/locale/bg/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/bg/LC_MESSAGES/django.mo index d85efeef8..bbfc710a9 100644 Binary files a/wagtail/wagtailimages/locale/bg/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/bg/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/bg/LC_MESSAGES/django.po index 019a2e8e7..d065aad7e 100644 --- a/wagtail/wagtailimages/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/bg/LC_MESSAGES/django.po @@ -1,53 +1,72 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# LyuboslavPetrov <petrov.lyuboslav@gmail.com>, 2014 +# Lyuboslav Petrov <petrov.lyuboslav@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" -"language/bg/)\n" -"Language: bg\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/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" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Заглавие" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Файл" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Тагове" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" -"Невалиден формат на изображение. Моля ползвайте gif, jpeg или png файлове." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" -"Невалиден формат на изображение. Моля ползвайте gif, jpeg или png файлове." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Изображения" @@ -82,13 +101,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Има едно съвпадение\n" -" " -msgstr[1] "" -"\n" -"Има %(counter)s съвпадения" +msgstr[0] "\n Има едно съвпадение\n " +msgstr[1] "\nИма %(counter)s съвпадения" #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -144,6 +158,7 @@ msgid "Yes, delete" msgstr "Да, изтрий го" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Редакция на %(title)s" @@ -160,32 +175,121 @@ msgstr "" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"Не сте качили никакви изображения. Защо не <a href=" -"\"%(wagtailimages_add_image_url)s\">качите едно сега</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "Не сте качили никакви изображения. Защо не <a href=\"%(wagtailimages_add_image_url)s\">качите едно сега</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Изображение '{0}' обновено." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "Изображението не можеше да бъде запазено поради грешки." -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Изображение '{0}' изтрито." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Изображение '{0}' добавено." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "Изображението не можеше да бъде създадено поради грешки." diff --git a/wagtail/wagtailimages/locale/ca/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/ca/LC_MESSAGES/django.mo index 5d6166928..08f5ccfdb 100644 Binary files a/wagtail/wagtailimages/locale/ca/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/ca/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/ca/LC_MESSAGES/django.po index 3fa7b7478..d43082fd6 100644 --- a/wagtail/wagtailimages/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/ca/LC_MESSAGES/django.po @@ -1,55 +1,72 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# Lloople <d.lloople@gmail.com>, 2014 +# David Llop <d.lloople@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-14 21:58+0000\n" -"Last-Translator: Lloople <d.lloople@gmail.com>\n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" -"ca/)\n" -"Language: ca\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/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" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Títol" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Arxiu" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Tags" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" -"No és un format d'imatge vàlid. Si us plau fes servir gif, jpeg o png com a " -"formats." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" -"No és un format d'imatge vàlid. Si us plau fes servir gif, jpeg o png com a " -"formats." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Imatges" @@ -84,12 +101,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Hi ha un resultat" -msgstr[1] "" -"\n" -"Hi han %(counter)s resultats" +msgstr[0] "\nHi ha un resultat" +msgstr[1] "\nHi han %(counter)s resultats" #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -145,6 +158,7 @@ msgid "Yes, delete" msgstr "Si, esborra" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Editant imatge %(title)s" @@ -161,32 +175,121 @@ msgstr "Ho sentim, cap imatge coincideix amb \"<em>%(query_string)s</em>\"" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"No has pujat cap imatge. Per què no <a href=\"%(wagtailimages_add_image_url)s" -"\">afegeixes una ara</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "No has pujat cap imatge. Per què no <a href=\"%(wagtailimages_add_image_url)s\">afegeixes una ara</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "Cercar imatges" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Imatge '{0}' actualitzada." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "No s'ha pogut desar la imatge." -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Imatge '{0}' eliminada." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Imatge '{0}' afegida." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "No s'ha pogut crear la imatge." diff --git a/wagtail/wagtailimages/locale/de/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/de/LC_MESSAGES/django.mo index 8f9ffa29c..0cb48f45d 100644 Binary files a/wagtail/wagtailimages/locale/de/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/de/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/de/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/de/LC_MESSAGES/django.po index 62997f97c..9f186eb44 100644 --- a/wagtail/wagtailimages/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/de/LC_MESSAGES/django.po @@ -1,54 +1,73 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# jspielmann <j@spielmannsolutions.com>, 2014 +# Johannes Spielmann <j@spielmannsolutions.com>, 2014 # pcraston <patrick@craston.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-24 19:01+0000\n" -"Last-Translator: pcraston <patrick@craston.com>\n" -"Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" -"de/)\n" -"Language: de\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: German (http://www.transifex.com/projects/p/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" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Titel" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Datei" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Schlagwörter" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" -"Kein gültiges Bildformat. Bitte benutzen Sie GIF-, JPEG- oder PNG-Dateien." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" -"Kein gültiges Bildformat. Bitte benutzen Sie GIF-, JPEG- oder PNG-Dateien." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Bilder" @@ -83,14 +102,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Es gibt ein Ergebnis\n" -" " -msgstr[1] "" -"\n" -" Es gibt %(counter)s Ergebnisse\n" -" " +msgstr[0] "\n Es gibt ein Ergebnis\n " +msgstr[1] "\n Es gibt %(counter)s Ergebnisse\n " #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -146,6 +159,7 @@ msgid "Yes, delete" msgstr "Ja, löschen" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Bild %(title)s bearbeiten" @@ -157,38 +171,126 @@ msgstr "Bearbeiten" #: templates/wagtailimages/images/results.html:31 #, python-format msgid "Sorry, no images match \"<em>%(query_string)s</em>\"" -msgstr "" -"Es gibt leider keine Bilder zum Suchbegriff \"<em>%(query_string)s</em>\"" +msgstr "Es gibt leider keine Bilder zum Suchbegriff \"<em>%(query_string)s</em>\"" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"Sie haben noch keine Bilder hochgeladen. <a href=" -"\"%(wagtailimages_add_image_url)s\">Laden Sie doch jetzt eins hoch!</a>" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "Sie haben noch keine Bilder hochgeladen. <a href=\"%(wagtailimages_add_image_url)s\">Laden Sie doch jetzt eins hoch!</a>" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "Nach Bildern suchen" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Bild '{0}' geändert." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "Aufgrund von Fehlern konnte das Bild nicht gespeichert werden." -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Bild '{0}' gelöscht." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Bild '{0}' hinzugefügt." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "Aufgrund von Fehlern konnte das Bild nicht erstellt werden." diff --git a/wagtail/wagtailimages/locale/el/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/el/LC_MESSAGES/django.mo index 07a20313a..fb25dfafc 100644 Binary files a/wagtail/wagtailimages/locale/el/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/el/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/el/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/el/LC_MESSAGES/django.po index 260846989..92bb5f8af 100644 --- a/wagtail/wagtailimages/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/el/LC_MESSAGES/django.po @@ -1,51 +1,72 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # serafeim <serafeim@torchbox.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-14 21:17+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" -"el/)\n" -"Language: el\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Greek (http://www.transifex.com/projects/p/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" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Τίτλος" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Αρχείο" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Ετικέτες" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "Πρέπει να ανεβάσετε αρχείο εικόνας τύπου gif, gpeg ή png." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "Πρέπει να ανεβάσετε αρχείο εικόνας τύπου gif, gpeg ή png." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Εικόνες" @@ -80,13 +101,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Βρέθηκε ένα αποτέλεσμα" -msgstr[1] "" -"\n" -" Βρέθηκαν %(counter)s αποτελέσματα\n" -" " +msgstr[0] "\nΒρέθηκε ένα αποτέλεσμα" +msgstr[1] "\n Βρέθηκαν %(counter)s αποτελέσματα\n " #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -142,6 +158,7 @@ msgid "Yes, delete" msgstr "Ναι, να διαγραφεί" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Επεξεργασία εικόνας %(title)s" @@ -153,38 +170,126 @@ msgstr "Διόρθωση" #: templates/wagtailimages/images/results.html:31 #, python-format msgid "Sorry, no images match \"<em>%(query_string)s</em>\"" -msgstr "" -"Λυπούμαστε, καμία εικόνα δε ταιριάζει με το \"<em>%(query_string)s</em>\"" +msgstr "Λυπούμαστε, καμία εικόνα δε ταιριάζει με το \"<em>%(query_string)s</em>\"" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"Δεν υπάρχουν εικόνες. Θέλετε να <a href=\"%(wagtailimages_add_image_url)s" -"\">προσθέσετε μερικές</a>;" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "Δεν υπάρχουν εικόνες. Θέλετε να <a href=\"%(wagtailimages_add_image_url)s\">προσθέσετε μερικές</a>;" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "Αναζήτηση εικόνων" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Η εικόνα '{0}' ενημερώθηκε." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "Δεν ήταν δυνατή η αποθήκευση της εικόνας." -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Η εικόνα '{0}' διαγράφηκε." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Η εικόνα '{0}' δημιουργήθηκε." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "Δεν ήταν δυνατή η δημιουργία της εικόνας." diff --git a/wagtail/wagtailimages/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/en/LC_MESSAGES/django.mo index 4b726f7d6..44e531ab0 100644 Binary files a/wagtail/wagtailimages/locale/en/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/en/LC_MESSAGES/django.po index 035259450..3fddd59f3 100644 --- a/wagtail/wagtailimages/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,32 +17,55 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "" -#: utils.py:17 -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" - -#: utils.py:28 -#, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "" @@ -134,6 +157,7 @@ msgid "Yes, delete" msgstr "" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "" @@ -154,26 +178,117 @@ msgid "" "\"%(wagtailimages_add_image_url)s\">add one now</a>?" msgstr "" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "" -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "" -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "" -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "" -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "" diff --git a/wagtail/wagtailimages/locale/es/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/es/LC_MESSAGES/django.mo index e6210845b..d57e9c728 100644 Binary files a/wagtail/wagtailimages/locale/es/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/es/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/es/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/es/LC_MESSAGES/django.po index 5079ae3e5..9f8743311 100644 --- a/wagtail/wagtailimages/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 @@ -9,48 +9,65 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-23 10:21+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" -"es/)\n" -"Language: es\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/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=2; plural=(n != 1);\n" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Título" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Archivo" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Etiquetas" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" -"No es un formato válido de imagen. Por favor, usa en su lugar un archivo " -"gif, jpeg o png." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" -"No es un formato válido de imagen. Por favor, usa en su lugar un archivo " -"gif, jpeg o png." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Imágenes" @@ -85,14 +102,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Hay una coincidencia\n" -" " -msgstr[1] "" -"\n" -" Hay %(counter)s coincidencias\n" -" " +msgstr[0] "\n Hay una coincidencia\n " +msgstr[1] "\n Hay %(counter)s coincidencias\n " #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -148,6 +159,7 @@ msgid "Yes, delete" msgstr "Sí, eliminar" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Editando imagen %(title)s" @@ -159,39 +171,126 @@ msgstr "Editando" #: templates/wagtailimages/images/results.html:31 #, python-format msgid "Sorry, no images match \"<em>%(query_string)s</em>\"" -msgstr "" -"Lo sentimos, no hay coincidencias en las imágenes \"<em>%(query_string)s</em>" -"\"" +msgstr "Lo sentimos, no hay coincidencias en las imágenes \"<em>%(query_string)s</em>\"" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"No has subido imágenes. ¿Por qué no <a href=\"%(wagtailimages_add_image_url)s" -"\">añadir una ahora</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "No has subido imágenes. ¿Por qué no <a href=\"%(wagtailimages_add_image_url)s\">añadir una ahora</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "Buscar imágenes" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Imagen '{0}' actualizada." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "La imagen no puedo ser guardada debido a errores" -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Imagen '{0}' eliminada." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Imagen '{0}' añadida." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "La imagen no pudo ser creada debido a errores." diff --git a/wagtail/wagtailimages/locale/eu/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/eu/LC_MESSAGES/django.mo index f5afff9e4..b3e5368fc 100644 Binary files a/wagtail/wagtailimages/locale/eu/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/eu/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/eu/LC_MESSAGES/django.po index 6a2bb4615..c07a35c6d 100644 --- a/wagtail/wagtailimages/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/eu/LC_MESSAGES/django.po @@ -1,49 +1,71 @@ # 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: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" -"eu/)\n" -"Language: eu\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Basque (http://www.transifex.com/projects/p/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" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "" -#: utils.py:17 -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" - -#: utils.py:28 -#, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "" @@ -135,6 +157,7 @@ msgid "Yes, delete" msgstr "" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "" @@ -151,30 +174,121 @@ msgstr "" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" msgstr "" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "" -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "" -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "" -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "" -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "" diff --git a/wagtail/wagtailimages/locale/fr/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/fr/LC_MESSAGES/django.mo index ffe2d5ee6..7655a52f3 100644 Binary files a/wagtail/wagtailimages/locale/fr/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/fr/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/fr/LC_MESSAGES/django.po index 824522083..fe6d971b6 100644 --- a/wagtail/wagtailimages/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/fr/LC_MESSAGES/django.po @@ -1,53 +1,72 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # nahuel, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-18 23:15+0000\n" -"Last-Translator: nahuel\n" -"Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" -"fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: French (http://www.transifex.com/projects/p/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=2; plural=(n > 1);\n" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Titre" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Fichier" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Mots-clés" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" -"Format d'image invalide. Utilisez à la place un fichier gif, jpeg ou png." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" -"Format d'image invalide. Utilisez à la place un fichier gif, jpeg ou png." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Images" @@ -82,14 +101,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Il y a une correspondance\n" -" " -msgstr[1] "" -"\n" -" Il y a %(counter)s correspondances\n" -" " +msgstr[0] "\n Il y a une correspondance\n " +msgstr[1] "\n Il y a %(counter)s correspondances\n " #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -145,6 +158,7 @@ msgid "Yes, delete" msgstr "Oui, supprimer" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Édition de l'image %(title)s" @@ -161,30 +175,121 @@ msgstr "Désolé, aucune image ne correspond à \"<em>%(query_string)s</em>\"" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" msgstr "" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Image '{0}' mise à jour." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "" -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Image '{0}' supprimée." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Image '{0}' ajoutée." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "" diff --git a/wagtail/wagtailimages/locale/gl/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/gl/LC_MESSAGES/django.mo index 674a09a72..69f7ddd9d 100644 Binary files a/wagtail/wagtailimages/locale/gl/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/gl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/gl/LC_MESSAGES/django.po index ed219144d..1208c799e 100644 --- a/wagtail/wagtailimages/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/gl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 @@ -9,48 +9,65 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-23 10:32+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" -"language/gl/)\n" -"Language: gl\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/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" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Título" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Arquivo" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Etiquetas" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" -"Non é un formato válido de imaxe. Por favor, usa no seu lugar un arquivo " -"gif, jpeg o png." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" -"Non é un formato válido de imaxe. Por favor, usa no seu lugar un arquivo " -"gif, jpeg o png." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Imaxes" @@ -85,14 +102,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Hai unha coincidencia\n" -" " -msgstr[1] "" -"\n" -" Hai %(counter)s coincidencias\n" -" " +msgstr[0] "\n Hai unha coincidencia\n " +msgstr[1] "\n Hai %(counter)s coincidencias\n " #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -148,6 +159,7 @@ msgid "Yes, delete" msgstr "Sí, eliminar" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Editando imaxe %(title)s" @@ -164,32 +176,121 @@ msgstr "Sentímolo, ningunha imaxe contén \"<em>%(query_string)s</em>\"" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"No subiches imaxes. ¿Por qué non <a href=\"%(wagtailimages_add_image_url)s" -"\">engadir unha agora</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "No subiches imaxes. ¿Por qué non <a href=\"%(wagtailimages_add_image_url)s\">engadir unha agora</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "Buscar imaxes" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Imaxe '{0}' actualizada." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "A imaxe non puido ser gardada debido a erros" -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Imaxe '{0}' eliminada." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Imaxe '{0}' engadida." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "A imaxe non puido ser creada debido a erros." diff --git a/wagtail/wagtailimages/locale/mn/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/mn/LC_MESSAGES/django.mo index 85f5890bd..04e2a47d0 100644 Binary files a/wagtail/wagtailimages/locale/mn/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/mn/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/mn/LC_MESSAGES/django.po index b6c48082f..f641c1c3e 100644 --- a/wagtail/wagtailimages/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/mn/LC_MESSAGES/django.po @@ -1,51 +1,72 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# delgermurun <info@delgermurun.com>, 2014 +# Delgermurun Purevkhuuu <info@delgermurun.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" -"language/mn/)\n" -"Language: mn\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/language/mn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: mn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Гарчиг" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Файл" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Шошго" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "Буруу форматтай зураг байна. gif, jpeg, png форматыг зөвшөөрнө." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "Буруу форматтай зураг байна. gif, jpeg, png форматыг зөвшөөрнө." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Зургууд" @@ -80,12 +101,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"1 зураг олдлоо" -msgstr[1] "" -"\n" -"%(counter)s зураг олдлоо" +msgstr[0] "\n1 зураг олдлоо" +msgstr[1] "\n%(counter)s зураг олдлоо" #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -141,6 +158,7 @@ msgid "Yes, delete" msgstr "Тийм, устга" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "%(title)s зургийг засч байна" @@ -157,32 +175,121 @@ msgstr "" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"Та зураг оруулаагүй байна. Яагаад <a href=\\\"%(wagtailimages_add_image_url)s" -"\\\">одоо нэгийг оруулж болохгүй гэж</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "Та зураг оруулаагүй байна. Яагаад <a href=\\\"%(wagtailimages_add_image_url)s\\\">одоо нэгийг оруулж болохгүй гэж</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "Зураг хайх" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "'{0}' зураг засагдлаа." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "Зураг энэ алдаануудаас шалтгаалан хадгалагдсангүй." -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "'{0}' зураг устлаа." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "'{0}' зураг нэмэгдлээ." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "Зураг энэ алдаануудаас шалтгаалан хадгалагдсангүй." diff --git a/wagtail/wagtailimages/locale/pl/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/pl/LC_MESSAGES/django.mo index d11ef1bec..c586dfedc 100644 Binary files a/wagtail/wagtailimages/locale/pl/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/pl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/pl/LC_MESSAGES/django.po index d0925b373..5cdbdd5c8 100644 --- a/wagtail/wagtailimages/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # utek <mail@utek.pl>, 2014 # utek <mail@utek.pl>, 2014 @@ -9,49 +9,65 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-14 22:16+0000\n" -"Last-Translator: utek <mail@utek.pl>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" -"pl/)\n" -"Language: pl\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Tytuł" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Plik" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Tagi" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "" -"Niepoprawny format obrazu. Użyj proszę jednego z następujących formatów: " -"gif, jpeg lub png." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "" -"Niepoprawny format obrazu. Użyj proszę jednego z następujących formatów: " -"gif, jpeg lub png." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Obrazy" @@ -86,18 +102,9 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Jedno dopasowanie\n" -" " -msgstr[1] "" -"\n" -" Znaleziono %(counter)s dopasowania\n" -" " -msgstr[2] "" -"\n" -" Znaleziono %(counter)s dopasowań\n" -" " +msgstr[0] "\n Jedno dopasowanie\n " +msgstr[1] "\n Znaleziono %(counter)s dopasowania\n " +msgstr[2] "\n Znaleziono %(counter)s dopasowań\n " #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -153,6 +160,7 @@ msgid "Yes, delete" msgstr "Tak, usuń" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Edycja obrazu %(title)s" @@ -169,32 +177,121 @@ msgstr "Przepraszamy, żaden obraz nie pasuje do \"<em>%(query_string)s</em>\"" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"Nie przesłano żadnych obrazów. Czemu nie <a href=" -"\"%(wagtailimages_add_image_url)s\">dodać jednego teraz</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "Nie przesłano żadnych obrazów. Czemu nie <a href=\"%(wagtailimages_add_image_url)s\">dodać jednego teraz</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "Szukaj obrazów" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Uaktualniono obraz '{0}'." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "Obraz nie mógł zostać zapisany z powodu błędów." -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Usunięto obraz '{0}'." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Dodano obraz '{0}'." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "Obraz nie mógł zostać stworzony z powodu błędów." diff --git a/wagtail/wagtailimages/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..dfde945b6 Binary files /dev/null and b/wagtail/wagtailimages/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..13f4e9c99 --- /dev/null +++ b/wagtail/wagtailimages/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,314 @@ +# 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. +# +# Translators: +# Thiago Cangussu <cangussu.thg@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-03 01:55+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" +"Language: pt_PT\n" + +#: forms.py:37 +msgid "Filter" +msgstr "Filtro" + +#: forms.py:39 +msgid "Original size" +msgstr "Dimensão original" + +#: forms.py:40 +msgid "Resize to width" +msgstr "Redimensionar pela largura" + +#: forms.py:41 +msgid "Resize to height" +msgstr "Redimensionar pela altura" + +#: forms.py:42 +msgid "Resize to min" +msgstr "Redimensionar pelo min" + +#: forms.py:43 +msgid "Resize to max" +msgstr "Redimensionar pelo máx" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "Redimensionar para preencher" + +#: forms.py:47 +msgid "Width" +msgstr "Largura" + +#: forms.py:48 +msgid "Height" +msgstr "Altura" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 +msgid "Title" +msgstr "Título" + +#: models.py:49 +msgid "File" +msgstr "Ficheiro" + +#: models.py:55 +msgid "Tags" +msgstr "Etiquetas" + +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 +#: templates/wagtailimages/images/index.html:18 +msgid "Images" +msgstr "Imagens" + +#: templates/wagtailimages/chooser/chooser.html:3 +#: templates/wagtailimages/edit_handlers/image_chooser_panel.html:19 +msgid "Choose an image" +msgstr "Escolher uma imagem" + +#: templates/wagtailimages/chooser/chooser.html:8 +#: templates/wagtailimages/chooser/chooser.html:20 +msgid "Search" +msgstr "Procurar" + +#: templates/wagtailimages/chooser/chooser.html:9 +#: templates/wagtailimages/chooser/chooser.html:43 +msgid "Upload" +msgstr "Enviar" + +#: templates/wagtailimages/chooser/chooser.html:23 +msgid "Popular tags" +msgstr "Etiquetas frequentes" + +#: templates/wagtailimages/chooser/results.html:6 +#: templates/wagtailimages/images/results.html:6 +#, python-format +msgid "" +"\n" +" There is one match\n" +" " +msgid_plural "" +"\n" +" There are %(counter)s matches\n" +" " +msgstr[0] "" +"\n" +" Existe uma correspondência\n" +" " +msgstr[1] "" +"\n" +" Existem %(counter)s correspondências\n" +" " + +#: templates/wagtailimages/chooser/results.html:13 +#: templates/wagtailimages/images/results.html:13 +msgid "Latest images" +msgstr "Últimas imagens" + +#: templates/wagtailimages/chooser/select_format.html:3 +msgid "Choose a format" +msgstr "Escolher um formato" + +#: templates/wagtailimages/chooser/select_format.html:17 +msgid "Insert image" +msgstr "Inserir imagem" + +#: templates/wagtailimages/edit_handlers/image_chooser_panel.html:17 +msgid "Clear image" +msgstr "Limpar imagem" + +#: templates/wagtailimages/edit_handlers/image_chooser_panel.html:18 +msgid "Choose another image" +msgstr "Escolher outra imagem" + +#: templates/wagtailimages/images/_file_field.html:6 +msgid "Change image:" +msgstr "Alterar imagem:" + +#: templates/wagtailimages/images/add.html:4 +#: templates/wagtailimages/images/index.html:19 +msgid "Add an image" +msgstr "Adicionar uma imagem" + +#: templates/wagtailimages/images/add.html:15 +msgid "Add image" +msgstr "Adicionar imagem" + +#: templates/wagtailimages/images/add.html:25 +#: templates/wagtailimages/images/edit.html:33 +msgid "Save" +msgstr "Guardar" + +#: templates/wagtailimages/images/confirm_delete.html:4 +#: templates/wagtailimages/images/confirm_delete.html:8 +#: templates/wagtailimages/images/edit.html:33 +msgid "Delete image" +msgstr "Eliminar imagem" + +#: templates/wagtailimages/images/confirm_delete.html:16 +msgid "Are you sure you want to delete this image?" +msgstr "Tem a certeza que quer eliminar esta imagem?" + +#: templates/wagtailimages/images/confirm_delete.html:19 +msgid "Yes, delete" +msgstr "Sim, eliminar" + +#: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 +#, python-format +msgid "Editing image %(title)s" +msgstr "Editando imagem %(title)s" + +#: templates/wagtailimages/images/edit.html:15 +msgid "Editing" +msgstr "Editando" + +#: templates/wagtailimages/images/results.html:31 +#, python-format +msgid "Sorry, no images match \"<em>%(query_string)s</em>\"" +msgstr "Desculpe, nenhuma imagem corresponde a \"<em>%(query_string)s</em>\"" + +#: templates/wagtailimages/images/results.html:34 +#, python-format +msgid "" +"You've not uploaded any images. Why not <a href=" +"\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "" +"Ainda não enviou qualquer imagem. Porque não <a href=" +"\"%(wagtailimages_add_image_url)s\">adicionar uma agora</a>?" + +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "A gerar URL" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "URL" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "Pre-visualizar" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" +"Note que as imagens criadas com dimensões superiores às do ecrã serão pre-" +"visualizadas mais pequenas para caberem no ecrã." + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "Utilização de %(title)s" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "Utilização de" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "Ascendente" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "Tipo" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "Estado" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "Editar esta página" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "Adicionar múltiplas imagens" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "Adicionar imagens" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "Arrastar e largar imagens nesta área para envio imediato." + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "Ou escolha no seu computador" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" +"Envio com sucesso. Por favor atualize esta imagem com um título mais " +"apropriado se necessário. Também pode eliminar completamente a imagem se o " +"envio não era pretendido." + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "Desculpe, o envio falhou." + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "Atualizar" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "Eliminar" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" +"Não é uma imagem válida. Por favor use uma imagem do tipo gif, jpeg, ou " +"png, com a extensão de nome correta (*.gif, *.jpg or *.png)." + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" +"Não é uma imagem do tipo %s válida. Por favor use uma imagem do tipo gif, " +"jpeg, ou png, com a extensão de nome correta (*.gif, *.jpg or *.png)." + +#: views/images.py:37 views/images.py:47 +msgid "Search images" +msgstr "Procurar imagens" + +#: views/images.py:99 +msgid "Image '{0}' updated." +msgstr "Imagem '{0}' atualizada." + +#: views/images.py:102 +msgid "The image could not be saved due to errors." +msgstr "A imagem não pôde ser guardada devido a erros." + +#: views/images.py:188 +msgid "Image '{0}' deleted." +msgstr "Imagem '{0}' eliminada." + +#: views/images.py:206 +msgid "Image '{0}' added." +msgstr "Imagem '{0}' adicionada." + +#: views/images.py:209 +msgid "The image could not be created due to errors." +msgstr "A imagem não pôde ser criada devido a erros." diff --git a/wagtail/wagtailimages/locale/ro/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/ro/LC_MESSAGES/django.mo index 8f17cf88a..da519e31a 100644 Binary files a/wagtail/wagtailimages/locale/ro/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/ro/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/ro/LC_MESSAGES/django.po index f3554ce8e..ac03909ae 100644 --- a/wagtail/wagtailimages/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/ro/LC_MESSAGES/django.po @@ -1,52 +1,72 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# zerolab, 2014 +# Dan Braghis, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-18 13:20+0000\n" -"Last-Translator: zerolab\n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" -"language/ro/)\n" -"Language: ro\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "Titlu" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "Fișier" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "Etichete" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "Format nevalid. Încercați un fișier gif, jpeg sau png în schimb." - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "Format nevalid. Încercați un fișier gif, jpeg sau png în schimb." - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "Imagini" @@ -81,15 +101,9 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Există o potrivire" -msgstr[1] "" -"\n" -"Sunt %(counter)s potriviri" -msgstr[2] "" -"\n" -"Sunt %(counter)s potriviri" +msgstr[0] "\nExistă o potrivire" +msgstr[1] "\nSunt %(counter)s potriviri" +msgstr[2] "\nSunt %(counter)s potriviri" #: templates/wagtailimages/chooser/results.html:13 #: templates/wagtailimages/images/results.html:13 @@ -145,6 +159,7 @@ msgid "Yes, delete" msgstr "Da, șterge" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "Editare imagine %(title)s" @@ -156,38 +171,126 @@ msgstr "Editare" #: templates/wagtailimages/images/results.html:31 #, python-format msgid "Sorry, no images match \"<em>%(query_string)s</em>\"" -msgstr "" -"Ne pare rău, \"<em>%(query_string)s</em>\" nu se potrivește cu nici o imagine" +msgstr "Ne pare rău, \"<em>%(query_string)s</em>\" nu se potrivește cu nici o imagine" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"Nu ați încărcat nici o imagine. De să nu <a href=" -"\"%(wagtailimages_add_image_url)s\">adăugați una</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "Nu ați încărcat nici o imagine. De să nu <a href=\"%(wagtailimages_add_image_url)s\">adăugați una</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "Caută imagini" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "Imaginea '{0}' a fost actualizată." -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "Imaginea nu a fost salvată din cauza erorilor." -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "Imaginea '{0}' a fost ștearsă." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "Imaginea '{0}' a fost adăugată." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "Imaginea nu a fost creată din cauza erorilor." diff --git a/wagtail/wagtailimages/locale/zh/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/zh/LC_MESSAGES/django.mo index dcd1d9e79..2910f1010 100644 Binary files a/wagtail/wagtailimages/locale/zh/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/zh/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/zh/LC_MESSAGES/django.po index 8eabb8a5b..564fcb35c 100644 --- a/wagtail/wagtailimages/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/zh/LC_MESSAGES/django.po @@ -1,50 +1,71 @@ # 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: 2014-07-11 10:53+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" -"zh/)\n" -"Language: zh\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/zh/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "标题" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "文件" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "标签" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "不是有效的图片格式。请用gif,jpeg或者png格式的图片" - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "不是有效的图片格式。请用gif,jpeg或者png格式的图片" - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "图片" @@ -135,6 +156,7 @@ msgid "Yes, delete" msgstr "是的,删除" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "编辑图片 %(title)s" @@ -151,32 +173,121 @@ msgstr "" #: templates/wagtailimages/images/results.html:34 #, python-format msgid "" -"You've not uploaded any images. Why not <a href=" -"\"%(wagtailimages_add_image_url)s\">add one now</a>?" -msgstr "" -"没有任何上传的图片。为什么不 <a href=\"%(wagtailimages_add_image_url)s\">添加" -"一个</a>?" +"You've not uploaded any images. Why not <a " +"href=\"%(wagtailimages_add_image_url)s\">add one now</a>?" +msgstr "没有任何上传的图片。为什么不 <a href=\"%(wagtailimages_add_image_url)s\">添加一个</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +msgid "Add multiple images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:13 +msgid "Add images" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +msgid "Delete" +msgstr "" + +#: utils/validators.py:17 utils/validators.py:28 +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: utils/validators.py:35 +#, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "图片 '{0}' 已更新" -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "图片 因为有错不能被保存" -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "图片 '{0}' 已删除." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "图片 '{0}' 已添加." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "图片因为有错不能被创建" diff --git a/wagtail/wagtailimages/locale/zh_TW/LC_MESSAGES/django.mo b/wagtail/wagtailimages/locale/zh_TW/LC_MESSAGES/django.mo index 284cefcb2..442bea2b6 100644 Binary files a/wagtail/wagtailimages/locale/zh_TW/LC_MESSAGES/django.mo and b/wagtail/wagtailimages/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailimages/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtailimages/locale/zh_TW/LC_MESSAGES/django.po index 3764ea36e..bcde4adb6 100644 --- a/wagtail/wagtailimages/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtailimages/locale/zh_TW/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:53+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" @@ -17,33 +17,55 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: models.py:29 +#: forms.py:37 +msgid "Filter" +msgstr "" + +#: forms.py:39 +msgid "Original size" +msgstr "" + +#: forms.py:40 +msgid "Resize to width" +msgstr "" + +#: forms.py:41 +msgid "Resize to height" +msgstr "" + +#: forms.py:42 +msgid "Resize to min" +msgstr "" + +#: forms.py:43 +msgid "Resize to max" +msgstr "" + +#: forms.py:44 +msgid "Resize to fill" +msgstr "" + +#: forms.py:47 +msgid "Width" +msgstr "" + +#: forms.py:48 +msgid "Height" +msgstr "" + +#: models.py:34 templates/wagtailimages/images/usage.html:16 msgid "Title" msgstr "標題" -#: models.py:44 +#: models.py:49 msgid "File" msgstr "文件" -#: models.py:50 +#: models.py:55 msgid "Tags" msgstr "標籤" -#: utils.py:17 -#, fuzzy -msgid "" -"Not a valid image. Please use a gif, jpeg or png file with the correct file " -"extension." -msgstr "不是有效的圖片格式。請用 gif、jpeg 或者 png 格式的圖片" - -#: utils.py:28 -#, fuzzy, python-format -msgid "" -"Not a valid %s image. Please use a gif, jpeg or png file with the correct " -"file extension." -msgstr "不是有效的圖片格式。請用 gif、jpeg 或者 png 格式的圖片" - -#: wagtail_hooks.py:23 templates/wagtailimages/images/index.html:5 +#: wagtail_hooks.py:64 templates/wagtailimages/images/index.html:5 #: templates/wagtailimages/images/index.html:18 msgid "Images" msgstr "圖片" @@ -139,6 +161,7 @@ msgid "Yes, delete" msgstr "是的,刪除" #: templates/wagtailimages/images/edit.html:4 +#: templates/wagtailimages/images/url_generator.html:4 #, python-format msgid "Editing image %(title)s" msgstr "編輯圖片 %(title)s" @@ -161,26 +184,121 @@ msgstr "" "沒有任何上傳的圖片。為什麼不 <a href=\"%(wagtailimages_add_image_url)s\">新增" "一個呢</a>?" -#: views/images.py:31 views/images.py:42 +#: templates/wagtailimages/images/url_generator.html:9 +msgid "Generating URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:25 +msgid "URL" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:28 +msgid "Preview" +msgstr "" + +#: templates/wagtailimages/images/url_generator.html:34 +msgid "" +"Note that images generated larger than the screen will appear smaller when " +"previewed here, so they fit the screen." +msgstr "" + +#: templates/wagtailimages/images/usage.html:3 +#, fuzzy, python-format +msgid "Usage of %(title)s" +msgstr "編輯圖片 %(title)s" + +#: templates/wagtailimages/images/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailimages/images/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailimages/images/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailimages/images/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailimages/images/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:3 +#, fuzzy +msgid "Add multiple images" +msgstr "新增一個圖片" + +#: templates/wagtailimages/multiple/add.html:13 +#, fuzzy +msgid "Add images" +msgstr "新增圖片" + +#: templates/wagtailimages/multiple/add.html:18 +msgid "Drag and drop images into this area to upload immediately." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:22 +msgid "Or choose from your computer" +msgstr "" + +#: templates/wagtailimages/multiple/add.html:47 +msgid "" +"Upload successful. Please update this image with a more appropriate title, " +"if necessary. You may also delete the image completely if the upload wasn't " +"required." +msgstr "" + +#: templates/wagtailimages/multiple/add.html:48 +msgid "Sorry, upload failed." +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:10 +msgid "Update" +msgstr "" + +#: templates/wagtailimages/multiple/edit_form.html:11 +#, fuzzy +msgid "Delete" +msgstr "刪除圖片" + +#: utils/validators.py:17 utils/validators.py:28 +#, fuzzy +msgid "" +"Not a valid image. Please use a gif, jpeg or png file with the correct file " +"extension (*.gif, *.jpg or *.png)." +msgstr "不是有效的圖片格式。請用 gif、jpeg 或者 png 格式的圖片" + +#: utils/validators.py:35 +#, fuzzy, python-format +msgid "" +"Not a valid %s image. Please use a gif, jpeg or png file with the correct " +"file extension (*.gif, *.jpg or *.png)." +msgstr "不是有效的圖片格式。請用 gif、jpeg 或者 png 格式的圖片" + +#: views/images.py:37 views/images.py:47 msgid "Search images" msgstr "搜尋圖片" -#: views/images.py:94 +#: views/images.py:99 msgid "Image '{0}' updated." msgstr "圖片 '{0}' 已更新" -#: views/images.py:97 +#: views/images.py:102 msgid "The image could not be saved due to errors." msgstr "圖片因有錯誤而無法儲存。" -#: views/images.py:116 +#: views/images.py:188 msgid "Image '{0}' deleted." msgstr "圖片 '{0}' 已刪除." -#: views/images.py:134 +#: views/images.py:206 msgid "Image '{0}' added." msgstr "圖片 '{0}' 已加入." -#: views/images.py:137 +#: views/images.py:209 msgid "The image could not be created due to errors." msgstr "圖片因有錯而不能被建立。" diff --git a/wagtail/wagtailimages/models.py b/wagtail/wagtailimages/models.py index cd2b7f111..bee887289 100644 --- a/wagtail/wagtailimages/models.py +++ b/wagtail/wagtailimages/models.py @@ -8,20 +8,25 @@ from taggit.managers import TaggableManager from django.core.files import File from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist from django.db import models -from django.db.models.signals import pre_delete +from django.db.models.signals import pre_delete, pre_save from django.dispatch.dispatcher import receiver from django.utils.safestring import mark_safe from django.utils.html import escape, format_html_join from django.conf import settings from django.utils.translation import ugettext_lazy as _ from django.utils.encoding import python_2_unicode_compatible +from django.utils.functional import cached_property +from django.core.urlresolvers import reverse from unidecode import unidecode from wagtail.wagtailadmin.taggable import TagSearchable from wagtail.wagtailimages.backends import get_image_backend -from wagtail.wagtailsearch import indexed -from .utils import validate_image_format +from wagtail.wagtailsearch import index +from wagtail.wagtailimages.utils.validators import validate_image_format +from wagtail.wagtailimages.utils.focal_point import FocalPoint +from wagtail.wagtailimages.utils.feature_detection import FeatureDetector, opencv_available +from wagtail.wagtailadmin.utils import get_object_usage def get_upload_to(self, filename): @@ -49,13 +54,80 @@ class AbstractImage(models.Model, TagSearchable): tags = TaggableManager(help_text=None, blank=True, verbose_name=_('Tags')) + focal_point_x = models.PositiveIntegerField(null=True, editable=False) + focal_point_y = models.PositiveIntegerField(null=True, editable=False) + focal_point_width = models.PositiveIntegerField(null=True, editable=False) + focal_point_height = models.PositiveIntegerField(null=True, editable=False) + + def get_usage(self): + return get_object_usage(self) + + @property + def usage_url(self): + return reverse('wagtailimages_image_usage', + args=(self.id,)) + search_fields = TagSearchable.search_fields + ( - indexed.FilterField('uploaded_by_user'), + index.FilterField('uploaded_by_user'), ) def __str__(self): return self.title + @property + def focal_point(self): + if self.focal_point_x is not None and \ + self.focal_point_y is not None and \ + self.focal_point_width is not None and \ + self.focal_point_height is not None: + return FocalPoint( + self.focal_point_x, + self.focal_point_y, + width=self.focal_point_width, + height=self.focal_point_height, + ) + + @focal_point.setter + def focal_point(self, focal_point): + if focal_point is not None: + self.focal_point_x = focal_point.x + self.focal_point_y = focal_point.y + self.focal_point_width = focal_point.width + self.focal_point_height = focal_point.height + else: + self.focal_point_x = None + self.focal_point_y = None + self.focal_point_width = None + self.focal_point_height = None + + def get_suggested_focal_point(self, backend_name='default'): + backend = get_image_backend(backend_name) + image_file = self.file.file + + # Make sure image is open and seeked to the beginning + image_file.open('rb') + image_file.seek(0) + + # Load the image + image = backend.open_image(self.file.file) + image_data = backend.image_data_as_rgb(image) + + # Make sure we have image data + # If the image is animated, image_data_as_rgb will return None + if image_data is None: + return + + # Use feature detection to find a focal point + feature_detector = FeatureDetector(image.size, image_data[0], image_data[1]) + focal_point = feature_detector.get_focal_point() + + # Add 20% extra room around the edge of the focal point + if focal_point: + focal_point.width *= 1.20 + focal_point.height *= 1.20 + + return focal_point + def get_rendition(self, filter): if not hasattr(filter, 'process_image'): # assume we've been passed a filter spec string, rather than a Filter object @@ -63,17 +135,50 @@ class AbstractImage(models.Model, TagSearchable): filter, created = Filter.objects.get_or_create(spec=filter) try: - rendition = self.renditions.get(filter=filter) + if self.focal_point: + rendition = self.renditions.get( + filter=filter, + focal_point_key=self.focal_point.get_key(), + ) + else: + rendition = self.renditions.get( + filter=filter, + focal_point_key=None, + ) except ObjectDoesNotExist: file_field = self.file # If we have a backend attribute then pass it to process # image - else pass 'default' backend_name = getattr(self, 'backend', 'default') - generated_image_file = filter.process_image(file_field.file, backend_name=backend_name) + generated_image = filter.process_image(file_field.file, backend_name=backend_name, focal_point=self.focal_point) - rendition, created = self.renditions.get_or_create( - filter=filter, defaults={'file': generated_image_file}) + # generate new filename derived from old one, inserting the filter spec and focal point key before the extension + if self.focal_point is not None: + focal_point_key = "focus-" + self.focal_point.get_key() + else: + focal_point_key = "focus-none" + + input_filename_parts = os.path.basename(file_field.file.name).split('.') + filename_without_extension = '.'.join(input_filename_parts[:-1]) + filename_without_extension = filename_without_extension[:60] # trim filename base so that we're well under 100 chars + output_filename_parts = [filename_without_extension, focal_point_key, filter.spec] + input_filename_parts[-1:] + output_filename = '.'.join(output_filename_parts) + + generated_image_file = File(generated_image, name=output_filename) + + if self.focal_point: + rendition, created = self.renditions.get_or_create( + filter=filter, + focal_point_key=self.focal_point.get_key(), + defaults={'file': generated_image_file} + ) + else: + rendition, created = self.renditions.get_or_create( + filter=filter, + focal_point_key=None, + defaults={'file': generated_image_file} + ) return rendition @@ -112,6 +217,19 @@ class Image(AbstractImage): pass +# Do smartcropping calculations when user saves an image without a focal point +@receiver(pre_save, sender=Image) +def image_feature_detection(sender, instance, **kwargs): + if getattr(settings, 'WAGTAILIMAGES_FEATURE_DETECTION_ENABLED', False): + if not opencv_available: + raise ImproperlyConfigured("pyOpenCV could not be found.") + + # Make sure the image doesn't already have a focal point + if instance.focal_point is None: + # Set the focal point + instance.focal_point = instance.get_suggested_focal_point() + + # Receive the pre_delete signal and delete the file associated with the model instance. @receiver(pre_delete, sender=Image) def image_delete(sender, instance, **kwargs): @@ -153,75 +271,73 @@ class Filter(models.Model): 'original': 'no_operation', } - def __init__(self, *args, **kwargs): - super(Filter, self).__init__(*args, **kwargs) - self.method = None # will be populated when needed, by parsing the spec string + class InvalidFilterSpecError(ValueError): + pass def _parse_spec_string(self): - # parse the spec string and save the results to - # self.method_name and self.method_arg. There are various possible - # formats to match against: + # parse the spec string and return the method name and method arg. + # There are various possible formats to match against: # 'original' # 'width-200' # 'max-320x200' if self.spec == 'original': - self.method_name = Filter.OPERATION_NAMES['original'] - self.method_arg = None - return + return Filter.OPERATION_NAMES['original'], None match = re.match(r'(width|height)-(\d+)$', self.spec) if match: - self.method_name = Filter.OPERATION_NAMES[match.group(1)] - self.method_arg = int(match.group(2)) - return + return Filter.OPERATION_NAMES[match.group(1)], int(match.group(2)) match = re.match(r'(max|min|fill)-(\d+)x(\d+)$', self.spec) if match: - self.method_name = Filter.OPERATION_NAMES[match.group(1)] width = int(match.group(2)) height = int(match.group(3)) - self.method_arg = (width, height) - return + return Filter.OPERATION_NAMES[match.group(1)], (width, height) # Spec is not one of our recognised patterns - raise ValueError("Invalid image filter spec: %r" % self.spec) + raise Filter.InvalidFilterSpecError("Invalid image filter spec: %r" % self.spec) - def process_image(self, input_file, backend_name='default'): + @cached_property + def _method(self): + return self._parse_spec_string() + + def is_valid(self): + try: + self._parse_spec_string() + return True + except Filter.InvalidFilterSpecError: + return False + + def process_image(self, input_file, output_file=None, focal_point=None, backend_name='default'): """ - Given an input image file as a django.core.files.File object, - generate an output image with this filter applied, returning it - as another django.core.files.File object + Run this filter on the given image file then write the result into output_file and return it + If output_file is not given, a new BytesIO will be used instead """ + # Get backend backend = get_image_backend(backend_name) - if not self.method: - self._parse_spec_string() + # Parse spec string + method_name, method_arg = self._method - # If file is closed, open it + # Open image input_file.open('rb') image = backend.open_image(input_file) file_format = image.format - method = getattr(backend, self.method_name) + # Process image + method = getattr(backend, method_name) + image = method(image, method_arg, focal_point=focal_point) - image = method(image, self.method_arg) + # Make sure we have an output file + if output_file is None: + output_file = BytesIO() - output = BytesIO() - backend.save_image(image, output, file_format) + # Write output + backend.save_image(image, output_file, file_format) - # and then close the input file + # Close the input file input_file.close() - # generate new filename derived from old one, inserting the filter spec string before the extension - input_filename_parts = os.path.basename(input_file.name).split('.') - filename_without_extension = '.'.join(input_filename_parts[:-1]) - filename_without_extension = filename_without_extension[:60] # trim filename base so that we're well under 100 chars - output_filename_parts = [filename_without_extension, self.spec] + input_filename_parts[-1:] - output_filename = '.'.join(output_filename_parts) - - output_file = File(output, name=output_filename) - return output_file @@ -230,6 +346,7 @@ class AbstractRendition(models.Model): file = models.ImageField(upload_to='images', width_field='width', height_field='height') width = models.IntegerField(editable=False) height = models.IntegerField(editable=False) + focal_point_key = models.CharField(max_length=255, null=True, editable=False) @property def url(self): @@ -257,7 +374,7 @@ class Rendition(AbstractRendition): class Meta: unique_together = ( - ('image', 'filter'), + ('image', 'filter', 'focal_point_key'), ) @@ -266,3 +383,4 @@ class Rendition(AbstractRendition): def rendition_delete(sender, instance, **kwargs): # Pass false so FileField doesn't save the model. instance.file.delete(False) + diff --git a/wagtail/wagtailimages/south_migrations/0003_focal_point_fields.py b/wagtail/wagtailimages/south_migrations/0003_focal_point_fields.py new file mode 100644 index 000000000..c9b6be1f8 --- /dev/null +++ b/wagtail/wagtailimages/south_migrations/0003_focal_point_fields.py @@ -0,0 +1,136 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Removing unique constraint on 'Rendition', fields ['image', 'filter'] + db.delete_unique('wagtailimages_rendition', ['image_id', 'filter_id']) + + # Adding field 'Image.focal_point_x' + db.add_column('wagtailimages_image', 'focal_point_x', + self.gf('django.db.models.fields.PositiveIntegerField')(null=True), + keep_default=False) + + # Adding field 'Image.focal_point_y' + db.add_column('wagtailimages_image', 'focal_point_y', + self.gf('django.db.models.fields.PositiveIntegerField')(null=True), + keep_default=False) + + # Adding field 'Image.focal_point_width' + db.add_column('wagtailimages_image', 'focal_point_width', + self.gf('django.db.models.fields.PositiveIntegerField')(null=True), + keep_default=False) + + # Adding field 'Image.focal_point_height' + db.add_column('wagtailimages_image', 'focal_point_height', + self.gf('django.db.models.fields.PositiveIntegerField')(null=True), + keep_default=False) + + # Adding field 'Rendition.focal_point_key' + db.add_column('wagtailimages_rendition', 'focal_point_key', + self.gf('django.db.models.fields.CharField')(max_length=255, null=True), + keep_default=False) + + # Adding unique constraint on 'Rendition', fields ['image', 'filter', 'focal_point_key'] + db.create_unique('wagtailimages_rendition', ['image_id', 'filter_id', 'focal_point_key']) + + + def backwards(self, orm): + # Removing unique constraint on 'Rendition', fields ['image', 'filter', 'focal_point_key'] + db.delete_unique('wagtailimages_rendition', ['image_id', 'filter_id', 'focal_point_key']) + + # Deleting field 'Image.focal_point_x' + db.delete_column('wagtailimages_image', 'focal_point_x') + + # Deleting field 'Image.focal_point_y' + db.delete_column('wagtailimages_image', 'focal_point_y') + + # Deleting field 'Image.focal_point_width' + db.delete_column('wagtailimages_image', 'focal_point_width') + + # Deleting field 'Image.focal_point_height' + db.delete_column('wagtailimages_image', 'focal_point_height') + + # Deleting field 'Rendition.focal_point_key' + db.delete_column('wagtailimages_rendition', 'focal_point_key') + + # Adding unique constraint on 'Rendition', fields ['image', 'filter'] + db.create_unique('wagtailimages_rendition', ['image_id', 'filter_id']) + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Group']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'user_set'", 'blank': 'True', 'to': "orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'wagtailimages.filter': { + 'Meta': {'object_name': 'Filter'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'spec': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}) + }, + 'wagtailimages.image': { + 'Meta': {'object_name': 'Image'}, + 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'file': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}), + 'focal_point_height': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}), + 'focal_point_width': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}), + 'focal_point_x': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}), + 'focal_point_y': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}), + 'height': ('django.db.models.fields.IntegerField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'uploaded_by_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}), + 'width': ('django.db.models.fields.IntegerField', [], {}) + }, + 'wagtailimages.rendition': { + 'Meta': {'unique_together': "(('image', 'filter', 'focal_point_key'),)", 'object_name': 'Rendition'}, + 'file': ('django.db.models.fields.files.ImageField', [], {'max_length': '100'}), + 'filter': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['wagtailimages.Filter']"}), + 'focal_point_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}), + 'height': ('django.db.models.fields.IntegerField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'image': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'renditions'", 'to': "orm['wagtailimages.Image']"}), + 'width': ('django.db.models.fields.IntegerField', [], {}) + } + } + + complete_apps = ['wagtailimages'] \ No newline at end of file diff --git a/wagtail/wagtailimages/static/wagtailimages/js/image-url-generator.js b/wagtail/wagtailimages/static/wagtailimages/js/image-url-generator.js new file mode 100644 index 000000000..c9f8ed1e7 --- /dev/null +++ b/wagtail/wagtailimages/static/wagtailimages/js/image-url-generator.js @@ -0,0 +1,69 @@ +$(function() { + "use strict"; + + $('.image-url-generator').each(function() { + var $this = $(this); + var $form = $this.find('form'); + var $filterMethodField = $form.find('select#id_filter_method'); + var $widthField = $form.find('input#id_width'); + var $heightField = $form.find('input#id_height'); + var $result = $this.find('#result-url'); + var $loadingMask = $this.find('.loading-mask') + var $preview = $this.find('img.preview'); + var $sizeNote = $('#note-size') + + var generatorUrl = $this.data('generatorUrl'); + + function formChangeHandler() { + var filterSpec = $filterMethodField.val(); + + $loadingMask.addClass('loading'); + + if (filterSpec == 'original') { + $widthField.prop('disabled', true); + $heightField.prop('disabled', true); + } else if (filterSpec == 'width') { + $widthField.prop('disabled', false); + $heightField.prop('disabled', true); + filterSpec += '-' + $widthField.val(); + } else if (filterSpec == 'height') { + $widthField.prop('disabled', true); + $heightField.prop('disabled', false); + filterSpec += '-' + $heightField.val(); + } else if (filterSpec == 'min' || filterSpec == 'max' || filterSpec == 'fill') { + $widthField.prop('disabled', false); + $heightField.prop('disabled', false); + filterSpec += '-' + $widthField.val() + 'x' + $heightField.val(); + } + + // Display note about scaled down images if image is large + if($widthField.val() > $(window).width()){ + $sizeNote.show(); + }else{ + $sizeNote.hide(); + } + + // Fields with width and height + $.getJSON(generatorUrl.replace('__filterspec__', filterSpec)) + .done(function(data) { + $result.val(data['url']); + $preview.attr('src', data['local_url']); + $loadingMask.removeClass('loading'); + }) + .fail(function(data) { + $result.val(data.responseJSON['error']); + $preview.attr('src', ''); + $loadingMask.removeClass('loading'); + }); + } + + $form.change($.debounce(500, formChangeHandler)); + $form.keyup($.debounce(500, formChangeHandler)); + formChangeHandler(); + + // When the user clicks the URL, automatically select the whole thing (for easier copying) + $result.click(function() { + $(this).select(); + }); + }); +}); diff --git a/wagtail/wagtailimages/templates/wagtailimages/images/edit.html b/wagtail/wagtailimages/templates/wagtailimages/images/edit.html index f75b4e56e..e904bd426 100644 --- a/wagtail/wagtailimages/templates/wagtailimages/images/edit.html +++ b/wagtail/wagtailimages/templates/wagtailimages/images/edit.html @@ -13,10 +13,10 @@ {% block content %} {% trans "Editing" as editing_str %} - {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=image.title icon="image" %} - + {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=image.title icon="image" usage_object=image %} + <div class="row row-flush nice-padding"> - + <div class="col7"> <form action="{% url 'wagtailimages_edit_image' image.id %}" method="POST" enctype="multipart/form-data"> {% csrf_token %} @@ -33,10 +33,13 @@ <li><input type="submit" value="{% trans 'Save' %}" /><a href="{% url 'wagtailimages_delete_image' image.id %}" class="button button-secondary no">{% trans "Delete image" %}</a></li> </ul> </form> - </div> <div class="col5"> {% image image max-800x600 %} + + {% if url_generator_enabled %} + <a href="{% url 'wagtailimages_url_generator' image.id %}" class="button bicolor icon icon-link">URL Generator</a> + {% endif %} </div> </div> {% endblock %} diff --git a/wagtail/wagtailimages/templates/wagtailimages/images/url_generator.html b/wagtail/wagtailimages/templates/wagtailimages/images/url_generator.html new file mode 100644 index 000000000..aae28cd95 --- /dev/null +++ b/wagtail/wagtailimages/templates/wagtailimages/images/url_generator.html @@ -0,0 +1,43 @@ +{% extends "wagtailadmin/base.html" %} +{% load wagtailimages_tags static compress i18n %} + +{% block titletag %}{% blocktrans with title=image.title %}Editing image {{ title }}{% endblocktrans %}{% endblock %} + +{% block bodyclass %}menu-images{% endblock %} + +{% block content %} + {% trans "Generating URL" as title_str %} + {% include "wagtailadmin/shared/header.html" with title=title_str subtitle=image.title icon="image" %} + + <div class="image-url-generator nice-padding" data-generator-url="{% url 'wagtailimages_generate_url' image.id '__filterspec__' %}"> + <form> + <ul class="fields"> + {% include "wagtailadmin/shared/field_as_li.html" with field=form.filter_method %} + <li> + <ul class="field-row"> + {% include "wagtailadmin/shared/field_as_li.html" with field=form.width li_classes="field-col col4" %} + {% include "wagtailadmin/shared/field_as_li.html" with field=form.height li_classes="field-col col4" %} + </ul> + </li> + </ul> + </form> + + <h2 class="icon icon-link">{% trans "URL" %}</h2> + <textarea id="result-url" rows="1"></textarea> + + <h2 class="icon icon-view">{% trans "Preview" %}</h2> + <div> + <div class="loading-mask inline-block"> + <img class="preview" src="" alt="Preview" /> + </div> + </div> + <p id="note-size" class="help-block help-warning">{% trans "Note that images generated larger than the screen will appear smaller when previewed here, so they fit the screen." %}</p> + </div> +{% endblock %} + +{% block extra_js %} + {% compress js %} + <script src="{% static 'wagtailadmin/js/vendor/jquery.ba-throttle-debounce.min.js' %}"></script> + <script src="{% static 'wagtailimages/js/image-url-generator.js' %}"></script> + {% endcompress %} +{% endblock %} \ No newline at end of file diff --git a/wagtail/wagtailimages/templates/wagtailimages/images/usage.html b/wagtail/wagtailimages/templates/wagtailimages/images/usage.html new file mode 100644 index 000000000..74ccbd6ee --- /dev/null +++ b/wagtail/wagtailimages/templates/wagtailimages/images/usage.html @@ -0,0 +1,49 @@ +{% extends "wagtailadmin/base.html" %} +{% load i18n %} +{% block titletag %}{% blocktrans with title=image.title %}Usage of {{ title }}{% endblocktrans %}{% endblock %} +{% block content %} + {% trans "Usage of" as usage_str %} + {% include "wagtailadmin/shared/header.html" with title=usage_str subtitle=image.title %} + + <div class="nice-padding"> + <table class="listing"> + <col /> + <col width="30%"/> + <col width="15%"/> + <col width="15%"/> + <thead> + <tr> + <th class="title">{% trans "Title" %}</th> + <th>{% trans "Parent" %}</th> + <th>{% trans "Type" %}</th> + <th>{% trans "Status" %}</th> + </tr> + </thead> + <tbody> + {% for page in used_by %} + <tr> + <td class="title" valign="top"> + <h2><a href="{% url 'wagtailadmin_pages_edit' page.id %}" title="{% trans 'Edit this page' %}">{{ page.title }}</a></h2> + </td> + <td> + {% if page.get_parent %} + <a href="{% url 'wagtailadmin_explore' page.get_parent.id %}">{{ page.get_parent.title }}</a> + {% endif %} + </td> + <td> + {{ page.content_type.model_class.get_verbose_name }} + </td> + <td> + {% if page.live %} + <a href="{{ page.url }}" target="_blank" class="status-tag {% if page.status_string != "draft" %}primary{% endif %}">{{ page.status_string }}</a> + {% else %} + <span class="status-tag {% if page.status_string != "draft" %}primary{% endif %}">{{ page.status_string }}</span> + {% endif %} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + {% include "wagtailadmin/shared/pagination_nav.html" with items=used_by linkurl="-" %} +{% endblock %} diff --git a/wagtail/wagtailimages/templates/wagtailimages/multiple/add.html b/wagtail/wagtailimages/templates/wagtailimages/multiple/add.html index 9945243d3..9bde36d09 100644 --- a/wagtail/wagtailimages/templates/wagtailimages/multiple/add.html +++ b/wagtail/wagtailimages/templates/wagtailimages/multiple/add.html @@ -1,5 +1,5 @@ {% extends "wagtailadmin/base.html" %} -{% load image_tags i18n compress static %} +{% load wagtailimages_tags i18n compress static %} {% block titletag %}{% trans "Add multiple images" %}{% endblock %} {% block bodyclass %}menu-images{% endblock %} {% block extra_css %} @@ -74,4 +74,4 @@ autocomplete: {source: "{{ autocomplete_url|addslashes }}"} }; </script> -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/wagtail/wagtailimages/tests.py b/wagtail/wagtailimages/tests.py index fb048d412..dabd5e0e8 100644 --- a/wagtail/wagtailimages/tests.py +++ b/wagtail/wagtailimages/tests.py @@ -1,9 +1,14 @@ import json +import datetime from mock import MagicMock -from django.utils import six +import dateutil.parser +from django.utils import six +from django.utils.http import urlquote +from django.utils import timezone from django.test import TestCase +from django.test.utils import override_settings from django import template from django.contrib.auth import get_user_model from django.contrib.auth.models import Group, Permission @@ -20,6 +25,11 @@ from wagtail.wagtailimages.formats import ( from wagtail.wagtailimages.backends import get_image_backend from wagtail.wagtailimages.backends.pillow import PillowBackend +from wagtail.wagtailimages.utils.crop import crop_to_point, CropBox +from wagtail.wagtailimages.utils.focal_point import FocalPoint +from wagtail.wagtailimages.utils.crypto import generate_signature, verify_signature +from wagtail.tests.models import EventPage, EventPageCarouselItem +from wagtail.wagtailcore.models import Page def get_test_image_file(): @@ -477,6 +487,55 @@ class TestFormat(TestCase): self.assertEqual(result, self.format) +class TestUsageCount(TestCase): + fixtures = ['wagtail/tests/fixtures/test.json'] + + def setUp(self): + self.image = Image.objects.create( + title="Test image", + file=get_test_image_file(), + ) + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_unused_image_usage_count(self): + self.assertEqual(self.image.get_usage().count(), 0) + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_used_image_document_usage_count(self): + page = EventPage.objects.get(id=4) + event_page_carousel_item = EventPageCarouselItem() + event_page_carousel_item.page = page + event_page_carousel_item.image = self.image + event_page_carousel_item.save() + self.assertEqual(self.image.get_usage().count(), 1) + + +class TestGetUsage(TestCase): + fixtures = ['wagtail/tests/fixtures/test.json'] + + def setUp(self): + self.image = Image.objects.create( + title="Test image", + file=get_test_image_file(), + ) + + def test_image_get_usage_not_enabled(self): + self.assertEqual(list(self.image.get_usage()), []) + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_unused_image_get_usage(self): + self.assertEqual(list(self.image.get_usage()), []) + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_used_image_document_get_usage(self): + page = EventPage.objects.get(id=4) + event_page_carousel_item = EventPageCarouselItem() + event_page_carousel_item.page = page + event_page_carousel_item.image = self.image + event_page_carousel_item.save() + self.assertTrue(issubclass(Page, type(self.image.get_usage()[0]))) + + class TestMultipleImageUploader(TestCase, WagtailTestUtils): """ This tests the multiple image upload views located in wagtailimages/views/multiple.py @@ -681,3 +740,279 @@ class TestMultipleImageUploader(TestCase, WagtailTestUtils): # Check response self.assertEqual(response.status_code, 400) + + +class TestSignatureGeneration(TestCase): + def test_signature_generation(self): + self.assertEqual(generate_signature(100, 'fill-800x600'), b'xnZOzQyUg6pkfciqcfRJRosOrGg=') + + def test_signature_verification(self): + self.assertTrue(verify_signature(b'xnZOzQyUg6pkfciqcfRJRosOrGg=', 100, 'fill-800x600')) + + def test_signature_changes_on_image_id(self): + self.assertFalse(verify_signature(b'xnZOzQyUg6pkfciqcfRJRosOrGg=', 200, 'fill-800x600')) + + def test_signature_changes_on_filter_spec(self): + self.assertFalse(verify_signature(b'xnZOzQyUg6pkfciqcfRJRosOrGg=', 100, 'fill-800x700')) + + +class TestFrontendServeView(TestCase): + def setUp(self): + # Create an image for running tests on + self.image = Image.objects.create( + title="Test image", + file=get_test_image_file(), + ) + + def test_get(self): + """ + Test a valid GET request to the view + """ + # Generate signature + signature = generate_signature(self.image.id, 'fill-800x600') + + # Get the image + response = self.client.get(reverse('wagtailimages_serve', args=(signature, self.image.id, 'fill-800x600'))) + + # Check response + self.assertEqual(response.status_code, 200) + self.assertEqual(response['Content-Type'], 'image/jpeg') + + # Make sure the cache headers are set to expire after at least one month + self.assertIn('Cache-Control', response) + self.assertEqual(response['Cache-Control'].split('=')[0], 'max-age') + self.assertTrue(int(response['Cache-Control'].split('=')[1]) > datetime.timedelta(days=30).seconds) + + self.assertIn('Expires', response) + self.assertTrue(dateutil.parser.parse(response['Expires']) > timezone.now() + datetime.timedelta(days=30)) + + def test_get_invalid_signature(self): + """ + Test that an invalid signature returns a 403 response + """ + # Generate a signature for the incorrect image id + signature = generate_signature(self.image.id + 1, 'fill-800x600') + + # Get the image + response = self.client.get(reverse('wagtailimages_serve', args=(signature, self.image.id, 'fill-800x600'))) + + # Check response + self.assertEqual(response.status_code, 403) + + def test_get_invalid_filter_spec(self): + """ + Test that an invalid filter spec returns a 400 response + + This is very unlikely to happen in reality. A user would have + to create signature for the invalid filter spec which can't be + done with Wagtails built in URL generator. We should test it + anyway though. + """ + # Generate a signature with the invalid filterspec + signature = generate_signature(self.image.id, 'bad-filter-spec') + + # Get the image + response = self.client.get(reverse('wagtailimages_serve', args=(signature, self.image.id, 'bad-filter-spec'))) + + # Check response + self.assertEqual(response.status_code, 400) + + +class TestURLGeneratorView(TestCase, WagtailTestUtils): + def setUp(self): + # Create an image for running tests on + self.image = Image.objects.create( + title="Test image", + file=get_test_image_file(), + ) + + # Login + self.user = self.login() + + def test_get(self): + """ + This tests that the view responds correctly for a user with edit permissions on this image + """ + # Get + response = self.client.get(reverse('wagtailimages_url_generator', args=(self.image.id, ))) + + # Check response + self.assertEqual(response.status_code, 200) + self.assertTemplateUsed(response, 'wagtailimages/images/url_generator.html') + + def test_get_bad_permissions(self): + """ + This tests that the view gives a 403 if a user without correct permissions attemts to access it + """ + # Remove privileges from user + self.user.is_superuser = False + self.user.user_permissions.add( + Permission.objects.get(content_type__app_label='wagtailadmin', codename='access_admin') + ) + self.user.save() + + # Get + response = self.client.get(reverse('wagtailimages_url_generator', args=(self.image.id, ))) + + # Check response + self.assertEqual(response.status_code, 403) + + +class TestGenerateURLView(TestCase, WagtailTestUtils): + def setUp(self): + # Create an image for running tests on + self.image = Image.objects.create( + title="Test image", + file=get_test_image_file(), + ) + + # Login + self.user = self.login() + + def test_get(self): + """ + This tests that the view responds correctly for a user with edit permissions on this image + """ + # Get + response = self.client.get(reverse('wagtailimages_generate_url', args=(self.image.id, 'fill-800x600'))) + + # Check response + self.assertEqual(response.status_code, 200) + self.assertEqual(response['Content-Type'], 'application/json') + + # Check JSON + content_json = json.loads(response.content.decode()) + + self.assertEqual(set(content_json.keys()), set(['url', 'local_url'])) + + expected_url = 'http://localhost/images/%(signature)s/%(image_id)d/fill-800x600/' % { + 'signature': urlquote(generate_signature(self.image.id, 'fill-800x600').decode()), + 'image_id': self.image.id, + } + self.assertEqual(content_json['url'], expected_url) + + expected_local_url = '/images/%(signature)s/%(image_id)d/fill-800x600/' % { + 'signature': urlquote(generate_signature(self.image.id, 'fill-800x600').decode()), + 'image_id': self.image.id, + } + self.assertEqual(content_json['local_url'], expected_local_url) + + def test_get_bad_permissions(self): + """ + This tests that the view gives a 403 if a user without correct permissions attemts to access it + """ + # Remove privileges from user + self.user.is_superuser = False + self.user.user_permissions.add( + Permission.objects.get(content_type__app_label='wagtailadmin', codename='access_admin') + ) + self.user.save() + + # Get + response = self.client.get(reverse('wagtailimages_generate_url', args=(self.image.id, 'fill-800x600'))) + + # Check response + self.assertEqual(response.status_code, 403) + self.assertEqual(response['Content-Type'], 'application/json') + + # Check JSON + self.assertJSONEqual(response.content.decode(), json.dumps({ + 'error': 'You do not have permission to generate a URL for this image.', + })) + + def test_get_bad_image(self): + """ + This tests that the view gives a 404 response if a user attempts to use it with an image which doesn't exist + """ + # Get + response = self.client.get(reverse('wagtailimages_generate_url', args=(self.image.id + 1, 'fill-800x600'))) + + # Check response + self.assertEqual(response.status_code, 404) + self.assertEqual(response['Content-Type'], 'application/json') + + # Check JSON + self.assertJSONEqual(response.content.decode(), json.dumps({ + 'error': 'Cannot find image.', + })) + + def test_get_bad_filter_spec(self): + """ + This tests that the view gives a 400 response if the user attempts to use it with an invalid filter spec + """ + # Get + response = self.client.get(reverse('wagtailimages_generate_url', args=(self.image.id, 'bad-filter-spec'))) + + # Check response + self.assertEqual(response.status_code, 400) + self.assertEqual(response['Content-Type'], 'application/json') + + # Check JSON + self.assertJSONEqual(response.content.decode(), json.dumps({ + 'error': 'Invalid filter spec.', + })) + + +class TestCropToPoint(TestCase): + def test_basic(self): + "Test basic cropping in the centre of the image" + self.assertEqual( + crop_to_point((640, 480), (100, 100), FocalPoint(x=320, y=240)), + CropBox(270, 190, 370, 290), + ) + + def test_basic_no_focal_point(self): + "If focal point is None, it should make one in the centre of the image" + self.assertEqual( + crop_to_point((640, 480), (100, 100), None), + CropBox(270, 190, 370, 290), + ) + + def test_doesnt_exit_top_left(self): + "Test that the cropbox doesn't exit the image at the top left" + self.assertEqual( + crop_to_point((640, 480), (100, 100), FocalPoint(x=0, y=0)), + CropBox(0, 0, 100, 100), + ) + + def test_doesnt_exit_bottom_right(self): + "Test that the cropbox doesn't exit the image at the bottom right" + self.assertEqual( + crop_to_point((640, 480), (100, 100), FocalPoint(x=640, y=480)), + CropBox(540, 380, 640, 480), + ) + + def test_doesnt_get_smaller_than_focal_point(self): + "Test that the cropbox doesn't get any smaller than the focal point" + self.assertEqual( + crop_to_point((640, 480), (10, 10), FocalPoint(x=320, y=240, width=100, height=100)), + CropBox(270, 190, 370, 290), + ) + + def test_keeps_composition(self): + "Test that the cropbox tries to keep the composition of the original image as much as it can" + self.assertEqual( + crop_to_point((300, 300), (150, 150), FocalPoint(x=100, y=200)), + CropBox(50, 100, 200, 250), # Focal point is 1/3 across and 2/3 down in the crop box + ) + + def test_keeps_focal_point_in_view_bottom_left(self): + """ + Even though it tries to keep the composition of the image, + it shouldn't let that get in the way of keeping the entire subject in view + """ + self.assertEqual( + crop_to_point((300, 300), (150, 150), FocalPoint(x=100, y=200, width=150, height=150)), + CropBox(25, 125, 175, 275), + ) + + def test_keeps_focal_point_in_view_top_right(self): + """ + Even though it tries to keep the composition of the image, + it shouldn't let that get in the way of keeping the entire subject in view + """ + self.assertEqual( + crop_to_point((300, 300), (150, 150), FocalPoint(x=200, y=100, width=150, height=150)), + CropBox(125, 25, 275, 175), + ) + diff --git a/wagtail/wagtailimages/urls.py b/wagtail/wagtailimages/urls.py index 4f8744f18..add04f13a 100644 --- a/wagtail/wagtailimages/urls.py +++ b/wagtail/wagtailimages/urls.py @@ -1,18 +1,8 @@ from django.conf.urls import url -from wagtail.wagtailimages.views import images, chooser, multiple + +from wagtail.wagtailimages.views import frontend + urlpatterns = [ - url(r'^$', images.index, name='wagtailimages_index'), - url(r'^(\d+)/$', images.edit, name='wagtailimages_edit_image'), - url(r'^(\d+)/delete/$', images.delete, name='wagtailimages_delete_image'), - url(r'^add/$', images.add, name='wagtailimages_add_image'), - - url(r'^multiple/add/$', multiple.add, name='wagtailimages_add_multiple'), - url(r'^multiple/(\d+)/$', multiple.edit, name='wagtailimages_edit_multiple'), - url(r'^multiple/(\d+)/delete/$', multiple.delete, name='wagtailimages_delete_multiple'), - - url(r'^chooser/$', chooser.chooser, name='wagtailimages_chooser'), - url(r'^chooser/(\d+)/$', chooser.image_chosen, name='wagtailimages_image_chosen'), - url(r'^chooser/upload/$', chooser.chooser_upload, name='wagtailimages_chooser_upload'), - url(r'^chooser/(\d+)/select_format/$', chooser.chooser_select_format, name='wagtailimages_chooser_select_format'), + url(r'^(.*)/(\d*)/(.*)/$', frontend.serve, name='wagtailimages_serve'), ] diff --git a/wagtail/wagtailimages/utils/__init__.py b/wagtail/wagtailimages/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/wagtail/wagtailimages/utils/crop.py b/wagtail/wagtailimages/utils/crop.py new file mode 100644 index 000000000..983f5db88 --- /dev/null +++ b/wagtail/wagtailimages/utils/crop.py @@ -0,0 +1,121 @@ +from __future__ import division + +from wagtail.wagtailimages.utils.focal_point import FocalPoint + + +class CropBox(object): + def __init__(self, left, top, right, bottom): + self.left = int(left) + self.top = int(top) + self.right = int(right) + self.bottom = int(bottom) + + def __getitem__(self, key): + return (self.left, self.top, self.right, self.bottom)[key] + + @property + def width(self): + return self.right - self.left + + @property + def height(self): + return self.bottom - self.top + + @property + def size(self): + return self.width, self.height + + def as_tuple(self): + return self.left, self.top, self.right, self.bottom + + def __eq__(self, other): + return self.as_tuple() == other.as_tuple() + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return 'CropBox(left: %d, top: %d, right: %d, bottom: %d)' % ( + self.left, self.top, self.right, self.bottom + ) + + +def crop_to_centre(image_size, crop_size): + (original_width, original_height) = image_size + (crop_width, crop_height) = crop_size + + # final dimensions should not exceed original dimensions + final_width = min(original_width, crop_width) + final_height = min(original_height, crop_height) + + left = (original_width - final_width) / 2 + top = (original_height - final_height) / 2 + + return CropBox(left, top, left + final_width, top + final_height) + + +def crop_to_point(image_size, crop_size, focal_point): + (original_width, original_height) = image_size + (crop_width, crop_height) = crop_size + + if not focal_point: + focal_point = FocalPoint(original_width / 2, original_height / 2) + + # Make sure that the crop size is no smaller than the focal point + crop_width = max(crop_width, focal_point.width) + crop_height = max(crop_height, focal_point.height) + + # Make sure final dimensions do not exceed original dimensions + final_width = min(original_width, crop_width) + final_height = min(original_height, crop_height) + + # Get UV for focal point + focal_point_u = focal_point.x / original_width + focal_point_v = focal_point.y / original_height + + # Get crop box + left = focal_point.x - focal_point_u * final_width + top = focal_point.y - focal_point_v * final_height + right = focal_point.x - focal_point_u * final_width + final_width + bottom = focal_point.y - focal_point_v * final_height + final_height + + # Make sure the entire focal point is in the crop box + focal_point_left = focal_point.x - focal_point.width / 2 + focal_point_top = focal_point.y - focal_point.height / 2 + focal_point_right = focal_point.x + focal_point.width / 2 + focal_point_bottom = focal_point.y + focal_point.height / 2 + + if left > focal_point_left: + right -= left - focal_point_left + left = focal_point_left + + if top > focal_point_top: + bottom -= top - focal_point_top + top = focal_point_top + + if right < focal_point_right: + left += focal_point_right - right; + right = focal_point_right + + if bottom < focal_point_bottom: + top += focal_point_bottom - bottom; + bottom = focal_point_bottom + + # Don't allow the crop box to go over the image boundary + if left < 0: + right -= left + left = 0 + + if top < 0: + bottom -= top + top = 0 + + if right > original_width: + left -= right - original_width + right = original_width + + if bottom > original_height: + top -= bottom - original_height + bottom = original_height + + return CropBox(left, top, right, bottom) diff --git a/wagtail/wagtailimages/utils/crypto.py b/wagtail/wagtailimages/utils/crypto.py new file mode 100644 index 000000000..e631493b7 --- /dev/null +++ b/wagtail/wagtailimages/utils/crypto.py @@ -0,0 +1,16 @@ +import base64 +import hmac +import hashlib + +from django.conf import settings + + +def generate_signature(image_id, filter_spec): + # Based on libthumbor hmac generation + # https://github.com/thumbor/libthumbor/blob/b19dc58cf84787e08c8e397ab322e86268bb4345/libthumbor/crypto.py#L50 + url = str(image_id) + '/' + str(filter_spec) + '/' + return base64.urlsafe_b64encode(hmac.new(settings.SECRET_KEY.encode(), url.encode(), hashlib.sha1).digest()) + + +def verify_signature(signature, image_id, filter_spec): + return signature == generate_signature(image_id, filter_spec) diff --git a/wagtail/wagtailimages/utils/face_detection/haarcascade_frontalface_alt2.xml b/wagtail/wagtailimages/utils/face_detection/haarcascade_frontalface_alt2.xml new file mode 100644 index 000000000..caa86f6c3 --- /dev/null +++ b/wagtail/wagtailimages/utils/face_detection/haarcascade_frontalface_alt2.xml @@ -0,0 +1,23550 @@ +<?xml version="1.0"?> +<!-- + Tree-based 20x20 gentle adaboost frontal face detector. + Created by Rainer Lienhart. + +//////////////////////////////////////////////////////////////////////////////////////// + + IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + + By downloading, copying, installing or using the software you agree to this license. + If you do not agree to this license, do not download, install, + copy or use the software. + + + Intel License Agreement + For Open Source Computer Vision Library + + Copyright (C) 2000, Intel Corporation, all rights reserved. + Third party copyrights are property of their respective owners. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistribution's of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistribution's in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * The name of Intel Corporation may not be used to endorse or promote products + derived from this software without specific prior written permission. + + This software is provided by the copyright holders and contributors "as is" and + any express or implied warranties, including, but not limited to, the implied + warranties of merchantability and fitness for a particular purpose are disclaimed. + In no event shall the Intel Corporation or contributors be liable for any direct, + indirect, incidental, special, exemplary, or consequential damages + (including, but not limited to, procurement of substitute goods or services; + loss of use, data, or profits; or business interruption) however caused + and on any theory of liability, whether in contract, strict liability, + or tort (including negligence or otherwise) arising in any way out of + the use of this software, even if advised of the possibility of such damage. +--> +<opencv_storage> +<haarcascade_frontalface_alt2 type_id="opencv-haar-classifier"> + <size>20 20</size> + <stages> + <_> + <!-- stage 0 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 7 16 4 -1.</_> + <_>2 9 16 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3272329494357109e-003</threshold> + <left_val>0.0383819006383419</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 4 3 14 -1.</_> + <_>8 11 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0130761601030827</threshold> + <left_val>0.8965256810188294</left_val> + <right_val>0.2629314064979553</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 6 1 6 -1.</_> + <_>13 9 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2434601821005344e-004</threshold> + <left_val>0.1021663025021553</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 2 12 8 -1.</_> + <_>8 2 4 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4573000632226467e-003</threshold> + <left_val>0.1238401979207993</left_val> + <right_val>0.6910383105278015</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 3 1 9 -1.</_> + <_>6 6 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.2708261217921972e-004</threshold> + <left_node>1</left_node> + <right_val>0.1953697055578232</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 7 14 9 -1.</_> + <_>3 10 14 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.3989109215326607e-004</threshold> + <left_val>0.2101441025733948</left_val> + <right_val>0.8258674740791321</right_val></_></_></trees> + <stage_threshold>0.3506923019886017</stage_threshold> + <parent>-1</parent> + <next>-1</next></_> + <_> + <!-- stage 1 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 7 4 4 -1.</_> + <_>4 9 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3025739938020706e-003</threshold> + <left_val>0.1018375977873802</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 4 2 16 -1.</_> + <_>9 12 2 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4174338690936565e-003</threshold> + <left_val>0.8219057917594910</left_val> + <right_val>0.1956554949283600</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 1 18 5 -1.</_> + <_>7 1 6 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0222032107412815</threshold> + <left_val>0.2205407023429871</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 5 13 8 -1.</_> + <_>4 9 13 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.7283110355492681e-004</threshold> + <left_val>0.0732632577419281</left_val> + <right_val>0.5931484103202820</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 7 16 9 -1.</_> + <_>1 10 16 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3567270040512085e-003</threshold> + <left_val>0.1844114959239960</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 0 15 4 -1.</_> + <_>2 2 15 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6032889727503061e-003</threshold> + <left_val>0.4032213985919952</left_val> + <right_val>0.8066521286964417</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 5 6 4 -1.</_> + <_>9 5 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7309630056843162e-003</threshold> + <left_val>0.2548328042030335</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 8 9 -1.</_> + <_>6 6 8 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8146401792764664e-003</threshold> + <left_val>0.6057069897651672</left_val> + <right_val>0.2779063880443573</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 3 8 -1.</_> + <_>8 16 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.7343417108058929e-003</threshold> + <left_val>0.2889980077743530</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 16 2 2 -1.</_> + <_>3 17 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.4522320432588458e-004</threshold> + <left_val>0.7616587281227112</left_val> + <right_val>0.3495643138885498</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 1 6 12 -1.</_> + <_>14 1 3 12 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0494148582220078</threshold> + <left_node>1</left_node> + <right_val>0.8151652812957764</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 4 12 6 -1.</_> + <_>8 4 4 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4891750440001488e-003</threshold> + <left_val>0.2808783054351807</left_val> + <right_val>0.6027774810791016</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 6 15 -1.</_> + <_>3 2 3 15 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0603136196732521</threshold> + <left_node>1</left_node> + <right_val>0.7607501745223999</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 9 6 -1.</_> + <_>5 6 9 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0762850288301706e-003</threshold> + <left_val>0.4444035887718201</left_val> + <right_val>0.1437312066555023</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 11 6 3 -1.</_> + <_>13 12 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.5083238556981087e-003</threshold> + <left_node>1</left_node> + <right_val>0.5318170189857483</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 12 6 4 -1.</_> + <_>12 14 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.6601309701800346e-003</threshold> + <left_val>0.5411052107810974</left_val> + <right_val>0.2180687040090561</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 11 6 3 -1.</_> + <_>1 12 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.6467678882181644e-003</threshold> + <left_node>1</left_node> + <right_val>0.1158960014581680</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 5 5 8 -1.</_> + <_>2 9 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.4662932204082608e-004</threshold> + <left_val>0.2340679019689560</left_val> + <right_val>0.5990381836891174</right_val></_></_></trees> + <stage_threshold>3.4721779823303223</stage_threshold> + <parent>0</parent> + <next>-1</next></_> + <_> + <!-- stage 2 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 4 10 4 -1.</_> + <_>5 6 10 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.8506218008697033e-003</threshold> + <left_node>1</left_node> + <right_val>0.1805496066808701</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 4 16 12 -1.</_> + <_>2 8 16 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.6141650527715683e-003</threshold> + <left_val>0.2177893966436386</left_val> + <right_val>0.8018236756324768</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 5 12 6 -1.</_> + <_>8 5 4 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4301309604197741e-003</threshold> + <left_val>0.1141354963183403</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 7 2 9 -1.</_> + <_>13 10 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1787960799410939e-004</threshold> + <left_val>0.1203093975782394</left_val> + <right_val>0.6108530759811401</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 2 9 -1.</_> + <_>5 10 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0010929545387626e-003</threshold> + <left_val>0.2079959958791733</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 1 6 8 -1.</_> + <_>9 1 2 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0577100329101086e-003</threshold> + <left_val>0.3302054107189179</left_val> + <right_val>0.7511094212532044</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 0 4 12 -1.</_> + <_>14 0 2 6 2.</_> + <_>12 6 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2376549420878291e-003</threshold> + <left_node>1</left_node> + <right_val>0.2768222093582153</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 10 2 -1.</_> + <_>5 9 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5315038985572755e-004</threshold> + <left_val>0.1668293029069901</left_val> + <right_val>0.5829476714134216</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 1 6 4 -1.</_> + <_>7 1 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0119536602869630</threshold> + <left_val>0.1508788019418716</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 3 9 12 -1.</_> + <_>3 3 3 12 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4182999730110168e-003</threshold> + <left_val>0.4391227960586548</left_val> + <right_val>0.7646595239639282</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 3 12 -1.</_> + <_>9 12 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.4642980899661779e-003</threshold> + <left_node>1</left_node> + <right_val>0.2651556134223938</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 5 20 15 -1.</_> + <_>0 10 20 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0149489501491189</threshold> + <left_val>0.2298053056001663</left_val> + <right_val>0.5442165732383728</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 2 6 8 -1.</_> + <_>2 2 3 4 2.</_> + <_>5 6 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0506849503144622e-003</threshold> + <left_node>1</left_node> + <right_val>0.3622843921184540</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 1 6 2 -1.</_> + <_>2 2 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.0782918222248554e-003</threshold> + <left_val>0.2601259946823120</left_val> + <right_val>0.7233657836914063</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 15 6 4 -1.</_> + <_>13 15 3 2 2.</_> + <_>10 17 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.4242828628048301e-004</threshold> + <left_val>0.3849678933620453</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 14 2 6 -1.</_> + <_>12 16 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.3204059153795242e-003</threshold> + <left_val>0.2965512871742249</left_val> + <right_val>0.5480309128761292</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 15 4 4 -1.</_> + <_>5 15 2 2 2.</_> + <_>7 17 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1421289527788758e-003</threshold> + <left_val>0.4104770123958588</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 18 1 2 -1.</_> + <_>7 19 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1783400550484657e-003</threshold> + <left_val>0.7239024043083191</left_val> + <right_val>0.2787283957004547</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 5 12 10 -1.</_> + <_>10 5 6 5 2.</_> + <_>4 10 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0440771095454693</threshold> + <left_val>0.5640516281127930</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 4 8 12 -1.</_> + <_>11 4 4 6 2.</_> + <_>7 10 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.7900090683251619e-003</threshold> + <left_val>0.5947548151016235</left_val> + <right_val>0.3312020003795624</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 11 2 3 -1.</_> + <_>9 12 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4291418958455324e-003</threshold> + <left_val>0.6603232026100159</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 3 12 12 -1.</_> + <_>3 3 6 6 2.</_> + <_>9 9 6 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.4262324273586273e-003</threshold> + <left_val>0.4680665135383606</left_val> + <right_val>0.2064338028430939</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 11 5 3 -1.</_> + <_>15 12 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0630257725715637e-003</threshold> + <left_val>0.5298851132392883</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 18 3 2 -1.</_> + <_>11 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2240812219679356e-003</threshold> + <left_val>0.5281602740287781</left_val> + <right_val>0.1909549981355667</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 11 5 3 -1.</_> + <_>0 12 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0630568079650402e-003</threshold> + <left_val>0.1380645930767059</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 18 3 2 -1.</_> + <_>8 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.6897541508078575e-003</threshold> + <left_val>0.5490636825561523</left_val> + <right_val>0.1260281056165695</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 8 16 2 -1.</_> + <_>2 9 16 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2472929665818810e-003</threshold> + <left_val>0.2372663021087647</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 5 12 -1.</_> + <_>9 12 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0495434887707233</threshold> + <left_val>0.5240166187286377</left_val> + <right_val>0.1769216060638428</right_val></_></_></trees> + <stage_threshold>5.9844889640808105</stage_threshold> + <parent>1</parent> + <next>-1</next></_> + <_> + <!-- stage 3 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 3 8 6 -1.</_> + <_>6 6 8 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.9326149746775627e-003</threshold> + <left_node>1</left_node> + <right_val>0.1998064965009689</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 12 2 -1.</_> + <_>8 7 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7918140403926373e-005</threshold> + <left_val>0.2299380004405975</left_val> + <right_val>0.7393211126327515</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 9 6 8 -1.</_> + <_>10 13 6 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0876200180500746e-003</threshold> + <left_node>1</left_node> + <right_val>0.1533840000629425</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 5 3 10 -1.</_> + <_>12 10 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4669660534709692e-006</threshold> + <left_val>0.2036858946084976</left_val> + <right_val>0.5854915976524353</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 6 3 9 -1.</_> + <_>4 9 3 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8739729421213269e-003</threshold> + <left_val>0.2049895972013474</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 4 6 4 -1.</_> + <_>9 4 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.3380251200869679e-004</threshold> + <left_val>0.3234199881553650</left_val> + <right_val>0.7323014140129089</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 3 8 3 -1.</_> + <_>12 3 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9151850137859583e-003</threshold> + <left_val>0.3045149147510529</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 0 3 6 -1.</_> + <_>15 3 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.9683797881007195e-003</threshold> + <left_val>0.2932133972644806</left_val> + <right_val>0.5621296167373657</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 12 10 8 -1.</_> + <_>2 12 5 4 2.</_> + <_>7 16 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.2115601506084204e-004</threshold> + <left_val>0.3658036887645721</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 6 8 -1.</_> + <_>5 9 6 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.9663117863237858e-003</threshold> + <left_val>0.2712155878543854</left_val> + <right_val>0.7226334810256958</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 3 8 3 -1.</_> + <_>12 3 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0308741796761751</threshold> + <left_val>0.4419837892055512</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 0 3 6 -1.</_> + <_>15 3 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0110997101292014</threshold> + <left_val>0.3612976968288422</left_val> + <right_val>0.5251451134681702</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 8 3 -1.</_> + <_>4 3 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1164179779589176e-003</threshold> + <left_val>0.3628616929054260</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 1 4 4 -1.</_> + <_>2 3 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.4317439943552017e-003</threshold> + <left_val>0.1601095050573349</left_val> + <right_val>0.7052276730537415</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 2 3 2 -1.</_> + <_>11 2 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.5266019403934479e-003</threshold> + <left_val>0.1301288008689880</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 3 3 1 -1.</_> + <_>11 3 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6907559474930167e-003</threshold> + <left_val>0.1786323934793472</left_val> + <right_val>0.5521529912948608</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 15 3 4 -1.</_> + <_>7 17 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6470930101349950e-004</threshold> + <left_val>0.3487383127212524</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 13 3 6 -1.</_> + <_>4 15 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0102155702188611</threshold> + <left_val>0.2673991024494171</left_val> + <right_val>0.6667919158935547</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 5 1 14 -1.</_> + <_>10 12 1 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2634709710255265e-003</threshold> + <left_node>1</left_node> + <right_val>0.3437863886356354</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 10 6 -1.</_> + <_>5 6 10 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0118752997368574</threshold> + <left_val>0.5995336174964905</left_val> + <right_val>0.3497717976570129</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 0 6 3 -1.</_> + <_>7 0 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0107323396950960</threshold> + <left_val>0.2150489985942841</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 0 3 5 -1.</_> + <_>7 0 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.1836481802165508e-003</threshold> + <left_val>0.6271436214447022</left_val> + <right_val>0.2519541978836060</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 15 6 5 -1.</_> + <_>9 15 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0283408891409636</threshold> + <left_val>0.0824118927121162</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 10 2 6 -1.</_> + <_>9 12 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5813230099156499e-004</threshold> + <left_val>0.5910056829452515</left_val> + <right_val>0.3705201148986816</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 17 3 2 -1.</_> + <_>9 17 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.2940340936183929e-003</threshold> + <left_node>1</left_node> + <right_val>0.1594727933406830</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 12 7 6 -1.</_> + <_>1 14 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0107510797679424</threshold> + <left_val>0.5980480909347534</left_val> + <right_val>0.2832508087158203</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 6 3 7 -1.</_> + <_>10 6 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0224651191383600</threshold> + <left_node>1</left_node> + <right_val>0.7877091169357300</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 3 4 9 -1.</_> + <_>16 6 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0579885393381119</threshold> + <left_val>0.1555740982294083</left_val> + <right_val>0.5239657163619995</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 3 7 -1.</_> + <_>9 6 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.2110891342163086e-003</threshold> + <left_node>1</left_node> + <right_val>0.6620365977287293</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 5 18 8 -1.</_> + <_>0 5 9 4 2.</_> + <_>9 9 9 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0483675710856915</threshold> + <left_val>0.1424719989299774</left_val> + <right_val>0.4429833889007568</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 5 2 10 -1.</_> + <_>13 10 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0144180599600077</threshold> + <left_val>0.1588540971279144</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 10 2 6 -1.</_> + <_>12 13 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0231563895940781</threshold> + <left_val>0.2375798970460892</left_val> + <right_val>0.5217134952545166</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 0 3 5 -1.</_> + <_>8 0 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.6985340565443039e-003</threshold> + <left_node>1</left_node> + <right_val>0.1941725015640259</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 5 8 6 -1.</_> + <_>6 7 8 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6248619221150875e-003</threshold> + <left_val>0.6278405785560608</left_val> + <right_val>0.3746044933795929</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 3 6 14 -1.</_> + <_>13 3 3 7 2.</_> + <_>10 10 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.2936748620122671e-004</threshold> + <left_node>1</left_node> + <right_val>0.3840922117233276</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 5 1 8 -1.</_> + <_>13 9 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.1783898854628205e-004</threshold> + <left_val>0.3106493055820465</left_val> + <right_val>0.5537847280502319</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 3 6 14 -1.</_> + <_>4 3 3 7 2.</_> + <_>7 10 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5803939428878948e-005</threshold> + <left_node>1</left_node> + <right_val>0.3444449007511139</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 5 1 8 -1.</_> + <_>6 9 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4719359569426160e-005</threshold> + <left_val>0.2729552090167999</left_val> + <right_val>0.6428951025009155</right_val></_></_></trees> + <stage_threshold>8.5117864608764648</stage_threshold> + <parent>2</parent> + <next>-1</next></_> + <_> + <!-- stage 4 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 1 1 6 -1.</_> + <_>8 3 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3469370314851403e-003</threshold> + <left_val>0.1657086014747620</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 0 15 2 -1.</_> + <_>2 1 15 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4774789344519377e-003</threshold> + <left_val>0.2273851037025452</left_val> + <right_val>0.6989349722862244</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 7 20 6 -1.</_> + <_>0 9 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2632777951657772e-003</threshold> + <left_val>0.1512074023485184</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 10 6 8 -1.</_> + <_>10 14 6 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.9075339920818806e-003</threshold> + <left_val>0.5564470291137695</left_val> + <right_val>0.1605442017316818</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 1 3 2 -1.</_> + <_>8 1 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3254349362105131e-003</threshold> + <left_val>0.1880259066820145</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 1 2 2 -1.</_> + <_>9 1 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4665479538962245e-003</threshold> + <left_val>0.3122498989105225</left_val> + <right_val>0.7165396213531494</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 3 12 9 -1.</_> + <_>4 6 12 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1231169030070305</threshold> + <left_node>1</left_node> + <right_val>0.3859583139419556</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 5 9 5 -1.</_> + <_>9 5 3 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2108340635895729e-003</threshold> + <left_val>0.2455293983221054</left_val> + <right_val>0.5695710182189941</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 9 5 -1.</_> + <_>8 5 3 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0661531016230583e-003</threshold> + <left_val>0.2716520130634308</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 6 6 12 -1.</_> + <_>4 10 6 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6130280932411551e-004</threshold> + <left_val>0.2293362021446228</left_val> + <right_val>0.7208629846572876</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 0 6 18 -1.</_> + <_>13 0 3 18 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0799578726291656</threshold> + <left_node>1</left_node> + <right_val>0.7833620905876160</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 8 1 12 -1.</_> + <_>10 12 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6064720004796982e-003</threshold> + <left_val>0.5545232295989990</left_val> + <right_val>0.2550689876079559</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 2 6 10 -1.</_> + <_>3 2 3 5 2.</_> + <_>6 7 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5699010156095028e-003</threshold> + <left_node>1</left_node> + <right_val>0.1819390058517456</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 2 4 6 -1.</_> + <_>3 2 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6259610420092940e-003</threshold> + <left_val>0.3529875874519348</left_val> + <right_val>0.6552819013595581</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 18 3 2 -1.</_> + <_>10 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6204981151968241e-003</threshold> + <left_val>0.5462309718132019</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 18 3 2 -1.</_> + <_>11 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4391951523721218e-003</threshold> + <left_val>0.1359843015670776</left_val> + <right_val>0.5415815114974976</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 8 2 6 -1.</_> + <_>2 10 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.0540945529937744e-003</threshold> + <left_val>0.1115119978785515</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 5 6 6 -1.</_> + <_>7 7 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.6067481162026525e-004</threshold> + <left_val>0.5846719741821289</left_val> + <right_val>0.2598348855972290</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 19 6 1 -1.</_> + <_>9 19 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6621041148900986e-003</threshold> + <left_val>0.1610569059848785</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 18 3 2 -1.</_> + <_>11 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.1165837794542313e-003</threshold> + <left_val>0.5376678705215454</left_val> + <right_val>0.1739455014467239</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 3 3 1 -1.</_> + <_>9 3 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1362339612096548e-003</threshold> + <left_val>0.1902073025703430</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 2 16 2 -1.</_> + <_>2 2 8 1 2.</_> + <_>10 3 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4809921421110630e-003</threshold> + <left_val>0.3272008001804352</left_val> + <right_val>0.6364840865135193</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 11 5 3 -1.</_> + <_>8 12 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.1061907112598419e-003</threshold> + <left_val>0.6914852857589722</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 6 3 -1.</_> + <_>7 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0048708692193031e-003</threshold> + <left_val>0.4327326118946075</left_val> + <right_val>0.6963843107223511</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 1 6 15 -1.</_> + <_>2 1 2 15 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0870285481214523</threshold> + <left_val>0.8594133853912354</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 12 2 3 -1.</_> + <_>2 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.7809639945626259e-003</threshold> + <left_val>0.0973944664001465</left_val> + <right_val>0.4587030112743378</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 13 1 3 -1.</_> + <_>16 14 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2166660055518150e-003</threshold> + <left_val>0.2554625868797302</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 7 6 4 -1.</_> + <_>16 7 3 2 2.</_> + <_>13 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3642730191349983e-003</threshold> + <left_val>0.3319090902805328</left_val> + <right_val>0.5964102745056152</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 13 3 6 -1.</_> + <_>7 16 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.0077864006161690e-003</threshold> + <left_val>0.2666594982147217</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 5 1 14 -1.</_> + <_>7 12 1 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0154941203072667</threshold> + <left_val>0.1848185956478119</left_val> + <right_val>0.6245970726013184</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 12 2 3 -1.</_> + <_>15 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2165028862655163e-003</threshold> + <left_node>1</left_node> + <right_val>0.5379927158355713</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 5 3 14 -1.</_> + <_>10 12 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0432497598230839</threshold> + <left_val>0.5183029174804688</left_val> + <right_val>0.2170419991016388</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 10 2 6 -1.</_> + <_>6 13 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8786511393263936e-004</threshold> + <left_node>1</left_node> + <right_val>0.2613384127616882</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 5 1 8 -1.</_> + <_>6 9 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2373150093480945e-003</threshold> + <left_val>0.2786532044410706</left_val> + <right_val>0.5908988118171692</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 11 2 1 -1.</_> + <_>13 11 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9528300035744905e-003</threshold> + <left_node>1</left_node> + <right_val>0.2612869143486023</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 1 6 10 -1.</_> + <_>15 1 3 5 2.</_> + <_>12 6 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4947060262784362e-003</threshold> + <left_val>0.5915412902832031</left_val> + <right_val>0.3455781936645508</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 2 3 -1.</_> + <_>3 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5878680646419525e-003</threshold> + <left_node>1</left_node> + <right_val>0.1587052047252655</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 18 2 1 -1.</_> + <_>10 18 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5938691105693579e-003</threshold> + <left_val>0.1270411014556885</left_val> + <right_val>0.5979428887367249</right_val></_></_></trees> + <stage_threshold>8.4680156707763672</stage_threshold> + <parent>3</parent> + <next>-1</next></_> + <_> + <!-- stage 5 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 17 9 -1.</_> + <_>1 3 17 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5810680128633976e-003</threshold> + <left_val>0.1995104998350143</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 2 8 8 -1.</_> + <_>1 2 4 4 2.</_> + <_>5 6 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8552350122481585e-003</threshold> + <left_val>0.7373070120811462</left_val> + <right_val>0.2921737134456635</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 6 4 -1.</_> + <_>9 5 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9758539274334908e-003</threshold> + <left_val>0.1956419944763184</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 9 7 10 -1.</_> + <_>10 14 7 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2583118882030249e-003</threshold> + <left_val>0.5692046880722046</left_val> + <right_val>0.1839064955711365</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 6 4 -1.</_> + <_>8 5 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3711679386906326e-004</threshold> + <left_val>0.2171667069196701</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 7 20 6 -1.</_> + <_>0 9 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.5942500215023756e-003</threshold> + <left_val>0.2719989120960236</left_val> + <right_val>0.7150244116783142</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 5 9 10 -1.</_> + <_>6 10 9 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0250324495136738</threshold> + <left_val>0.1825183928012848</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 4 4 12 -1.</_> + <_>8 10 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.3087949529290199e-003</threshold> + <left_val>0.5699837803840637</left_val> + <right_val>0.3509852886199951</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 6 8 3 -1.</_> + <_>6 7 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2494920305907726e-003</threshold> + <left_node>1</left_node> + <right_val>0.4023926854133606</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 13 10 6 -1.</_> + <_>3 13 5 3 2.</_> + <_>8 16 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0148857301101089</threshold> + <left_val>0.3604095876216888</left_val> + <right_val>0.7291995286941528</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 1 4 11 -1.</_> + <_>15 1 2 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0623216927051544e-003</threshold> + <left_node>1</left_node> + <right_val>0.6491490006446838</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 7 10 10 -1.</_> + <_>10 7 5 5 2.</_> + <_>5 12 5 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0274056792259216</threshold> + <left_val>0.5518993139266968</left_val> + <right_val>0.2659681141376495</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 1 4 11 -1.</_> + <_>3 1 2 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0343686006963253</threshold> + <left_node>1</left_node> + <right_val>0.6712512969970703</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 5 8 12 -1.</_> + <_>1 11 8 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0272929705679417</threshold> + <left_val>0.1691378057003021</left_val> + <right_val>0.4326277971267700</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 7 6 4 -1.</_> + <_>16 7 3 2 2.</_> + <_>13 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4452121043577790e-004</threshold> + <left_val>0.3405100107192993</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 10 7 4 -1.</_> + <_>11 12 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.0336280623450875e-004</threshold> + <left_val>0.5516793131828308</left_val> + <right_val>0.3311387896537781</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 20 12 -1.</_> + <_>0 4 10 6 2.</_> + <_>10 10 10 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1227546036243439</threshold> + <left_val>0.1675315052270889</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 5 6 15 -1.</_> + <_>1 10 6 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2559928949922323e-003</threshold> + <left_val>0.3615751862525940</left_val> + <right_val>0.6420782804489136</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 10 3 8 -1.</_> + <_>11 14 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0320903994143009</threshold> + <left_val>0.2921079099178314</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 12 7 6 -1.</_> + <_>11 14 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2957999501377344e-003</threshold> + <left_val>0.5613031983375549</left_val> + <right_val>0.3357860147953033</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 11 2 3 -1.</_> + <_>9 12 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2273170072585344e-003</threshold> + <left_val>0.6970642805099487</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 4 3 -1.</_> + <_>8 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1171669466421008e-003</threshold> + <left_val>0.3541150093078613</left_val> + <right_val>0.6144006252288818</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 14 14 4 -1.</_> + <_>10 14 7 2 2.</_> + <_>3 16 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0172799509018660</threshold> + <left_node>1</left_node> + <right_val>0.5537180900573731</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>18 7 2 4 -1.</_> + <_>18 9 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0117412004619837</threshold> + <left_val>0.5341957211494446</left_val> + <right_val>0.2757104933261871</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 6 6 -1.</_> + <_>3 14 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6405228786170483e-003</threshold> + <left_node>1</left_node> + <right_val>0.2489521056413651</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 3 6 -1.</_> + <_>0 6 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0169130302965641</threshold> + <left_val>0.1711928993463516</left_val> + <right_val>0.5523952841758728</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 3 3 -1.</_> + <_>9 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0100601697340608</threshold> + <left_node>1</left_node> + <right_val>0.8273450732231140</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 7 10 4 -1.</_> + <_>15 7 5 2 2.</_> + <_>10 9 5 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.0715491417795420e-004</threshold> + <left_val>0.3779391050338745</left_val> + <right_val>0.5476251840591431</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 2 6 8 -1.</_> + <_>7 6 6 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0865400545299053e-003</threshold> + <left_node>1</left_node> + <right_val>0.3296540975570679</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 6 2 -1.</_> + <_>8 3 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.9362077414989471e-003</threshold> + <left_val>0.6062883734703064</left_val> + <right_val>0.2434220016002655</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 6 3 5 -1.</_> + <_>11 6 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6372660067863762e-004</threshold> + <left_node>1</left_node> + <right_val>0.3814094960689545</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 0 6 19 -1.</_> + <_>11 0 2 19 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0131100500002503</threshold> + <left_val>0.5517616271972656</left_val> + <right_val>0.3726893067359924</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 1 2 -1.</_> + <_>3 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9806280508637428e-003</threshold> + <left_val>0.1229664012789726</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 5 3 -1.</_> + <_>7 15 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1619571857154369e-003</threshold> + <left_val>0.7252274751663208</left_val> + <right_val>0.4973455071449280</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 1 18 4 -1.</_> + <_>11 1 9 2 2.</_> + <_>2 3 9 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0338423289358616</threshold> + <left_val>0.5348312854766846</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 5 3 8 -1.</_> + <_>11 5 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2564560165628791e-003</threshold> + <left_val>0.5851914882659912</left_val> + <right_val>0.4384166896343231</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 1 18 4 -1.</_> + <_>0 1 9 2 2.</_> + <_>9 3 9 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0196352303028107</threshold> + <left_val>0.2297834008932114</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 5 3 8 -1.</_> + <_>8 5 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.9625496659427881e-004</threshold> + <left_val>0.6295937895774841</left_val> + <right_val>0.4131599068641663</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 2 6 -1.</_> + <_>9 7 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0231271106749773</threshold> + <left_val>0.1695459038019180</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 8 5 2 -1.</_> + <_>10 9 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0235257092863321</threshold> + <left_val>0.5174130201339722</left_val> + <right_val>0.0595193915069103</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 10 15 1 -1.</_> + <_>7 10 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0193565208464861</threshold> + <left_val>0.1357247978448868</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 7 2 6 -1.</_> + <_>2 9 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1787112131714821e-003</threshold> + <left_val>0.2996628880500794</left_val> + <right_val>0.5791695117950440</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 3 3 -1.</_> + <_>9 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.1488779932260513e-003</threshold> + <left_node>1</left_node> + <right_val>0.6592589020729065</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 4 10 -1.</_> + <_>9 12 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.3972279205918312e-003</threshold> + <left_val>0.5307171940803528</left_val> + <right_val>0.3795121014118195</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 8 8 2 -1.</_> + <_>0 8 4 1 2.</_> + <_>4 9 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.1955118983169086e-006</threshold> + <left_val>0.3128314912319183</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 9 10 8 -1.</_> + <_>5 9 5 4 2.</_> + <_>10 13 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0471144095063210</threshold> + <left_val>0.5537893176078796</left_val> + <right_val>0.1027309000492096</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 4 -1.</_> + <_>9 7 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.2878710925579071e-003</threshold> + <left_val>0.4660859107971191</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 3 4 -1.</_> + <_>10 6 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.1887511983513832e-003</threshold> + <left_val>0.7158858180046082</left_val> + <right_val>0.4724448919296265</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 3 2 1 -1.</_> + <_>9 3 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9757320880889893e-003</threshold> + <left_node>1</left_node> + <right_val>0.0593456886708736</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 6 3 4 -1.</_> + <_>9 6 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8449809867888689e-003</threshold> + <left_val>0.7027301788330078</left_val> + <right_val>0.4718731045722961</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 0 4 14 -1.</_> + <_>14 0 2 7 2.</_> + <_>12 7 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0239540279144421e-004</threshold> + <left_val>0.5894734263420105</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 5 6 9 -1.</_> + <_>12 5 3 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4277009069919586e-003</threshold> + <left_val>0.4862355887889862</left_val> + <right_val>0.5247588157653809</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 6 16 -1.</_> + <_>3 2 3 16 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0647513121366501</threshold> + <left_val>0.6917471289634705</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 12 4 2 -1.</_> + <_>1 13 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.9380151429213583e-004</threshold> + <left_val>0.4669617116451263</left_val> + <right_val>0.2382405996322632</right_val></_></_></trees> + <stage_threshold>12.5784997940063480</stage_threshold> + <parent>4</parent> + <next>-1</next></_> + <_> + <!-- stage 6 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 6 1 -1.</_> + <_>9 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4397440245375037e-003</threshold> + <left_val>0.2773470878601074</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 3 4 9 -1.</_> + <_>8 6 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4068560712039471e-004</threshold> + <left_val>0.7427154779434204</left_val> + <right_val>0.2479735016822815</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 10 4 6 -1.</_> + <_>12 13 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.1237959673453588e-006</threshold> + <left_node>1</left_node> + <right_val>0.2199503034353256</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 1 8 16 -1.</_> + <_>12 1 4 8 2.</_> + <_>8 9 4 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3661039303988218e-003</threshold> + <left_val>0.5889989733695984</left_val> + <right_val>0.2595716118812561</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 6 3 6 -1.</_> + <_>4 9 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7343269428238273e-003</threshold> + <left_val>0.1860125958919525</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 3 6 2 -1.</_> + <_>4 3 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5874590026214719e-003</threshold> + <left_val>0.4151870906352997</left_val> + <right_val>0.7103474140167236</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 3 12 -1.</_> + <_>9 12 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.7285638973116875e-003</threshold> + <left_node>1</left_node> + <right_val>0.2527967095375061</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 9 7 10 -1.</_> + <_>10 14 7 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1288381963968277</threshold> + <left_val>0.1393000930547714</left_val> + <right_val>0.5254514813423157</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 9 7 10 -1.</_> + <_>3 14 7 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.9412180930376053e-003</threshold> + <left_node>1</left_node> + <right_val>0.2487729042768478</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 5 1 14 -1.</_> + <_>7 12 1 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0126617299392819</threshold> + <left_val>0.2710700035095215</left_val> + <right_val>0.6618837714195252</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 14 1 6 -1.</_> + <_>13 16 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0146789868013002e-005</threshold> + <left_val>0.3812825977802277</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 12 3 6 -1.</_> + <_>14 14 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0163301602005959</threshold> + <left_val>0.2326432019472122</left_val> + <right_val>0.5263010859489441</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 14 1 6 -1.</_> + <_>6 16 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4622770322603174e-005</threshold> + <left_val>0.4293332099914551</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 12 3 6 -1.</_> + <_>3 14 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0208586603403091</threshold> + <left_val>0.1600403934717178</left_val> + <right_val>0.6782314777374268</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 5 3 -1.</_> + <_>8 14 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8194559272378683e-003</threshold> + <left_node>1</left_node> + <right_val>0.6679294109344482</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 2 3 -1.</_> + <_>9 15 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.7899368908256292e-003</threshold> + <left_val>0.4587705135345459</left_val> + <right_val>0.7176238894462585</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 1 10 8 -1.</_> + <_>5 1 5 4 2.</_> + <_>10 5 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0353446416556835</threshold> + <left_node>1</left_node> + <right_val>0.1864075064659119</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 4 5 4 -1.</_> + <_>6 6 5 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1571600334718823e-003</threshold> + <left_val>0.5538259744644165</left_val> + <right_val>0.3150450885295868</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 10 18 1 -1.</_> + <_>7 10 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.8742752298712730e-003</threshold> + <left_val>0.2828791141510010</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 10 4 3 -1.</_> + <_>11 10 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5201780115603469e-005</threshold> + <left_val>0.5870224237442017</left_val> + <right_val>0.3704823851585388</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 11 6 1 -1.</_> + <_>7 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2681879636365920e-004</threshold> + <left_node>1</left_node> + <right_val>0.4218930900096893</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 13 2 3 -1.</_> + <_>3 14 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.7845689803361893e-003</threshold> + <left_val>0.6667001247406006</left_val> + <right_val>0.2461182028055191</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 12 3 4 -1.</_> + <_>12 14 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5295992903411388e-005</threshold> + <left_node>1</left_node> + <right_val>0.3557587862014771</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 10 5 6 -1.</_> + <_>11 12 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0443948917090893</threshold> + <left_val>0.1665547043085098</left_val> + <right_val>0.5234848856925964</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 8 16 2 -1.</_> + <_>0 9 16 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0126030538231134e-003</threshold> + <left_val>0.2884612977504730</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 1 3 4 -1.</_> + <_>2 3 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.6327780261635780e-003</threshold> + <left_val>0.2969340085983276</left_val> + <right_val>0.6080111265182495</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 3 3 -1.</_> + <_>10 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.0330411866307259e-003</threshold> + <left_val>0.4536390006542206</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 12 6 -1.</_> + <_>9 6 4 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1367668956518173</threshold> + <left_val>0.5177264213562012</left_val> + <right_val>0.1449182033538818</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 3 3 -1.</_> + <_>9 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.0060478970408440e-003</threshold> + <left_val>0.7616909742355347</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 6 12 6 -1.</_> + <_>7 6 4 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0124758398160338</threshold> + <left_val>0.2159706056118012</left_val> + <right_val>0.5460187792778015</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 5 6 5 -1.</_> + <_>12 5 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.4012258341535926e-004</threshold> + <left_node>1</left_node> + <right_val>0.3926295936107636</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 7 10 2 -1.</_> + <_>5 7 5 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0121919801458716</threshold> + <left_val>0.3478881120681763</left_val> + <right_val>0.5542662739753723</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 5 6 5 -1.</_> + <_>6 5 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4959481349214911e-004</threshold> + <left_val>0.6064276099205017</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 3 2 10 -1.</_> + <_>9 8 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1802430273965001e-004</threshold> + <left_val>0.5697407126426697</left_val> + <right_val>0.1779713928699493</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 1 16 2 -1.</_> + <_>11 1 8 1 2.</_> + <_>3 2 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.9115799851715565e-003</threshold> + <left_val>0.5379372239112854</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 9 3 2 -1.</_> + <_>9 10 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.7631698008626699e-004</threshold> + <left_val>0.3327839076519013</left_val> + <right_val>0.5461531281471252</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 1 16 2 -1.</_> + <_>1 1 8 1 2.</_> + <_>9 2 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.7870173156261444e-003</threshold> + <left_val>0.2116160988807678</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 14 1 3 -1.</_> + <_>8 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6761029837653041e-003</threshold> + <left_val>0.6635823249816895</left_val> + <right_val>0.4365859031677246</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 5 12 10 -1.</_> + <_>10 5 6 5 2.</_> + <_>4 10 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0556949488818645</threshold> + <left_node>1</left_node> + <right_val>0.5387424826622009</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 6 6 -1.</_> + <_>10 13 3 3 2.</_> + <_>7 16 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0198443792760372</threshold> + <left_val>0.1602804958820343</left_val> + <right_val>0.5330458879470825</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 9 3 2 -1.</_> + <_>8 10 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.4751611100509763e-004</threshold> + <left_val>0.2917476892471314</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 2 6 4 -1.</_> + <_>9 2 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0230328906327486</threshold> + <left_val>0.5608124136924744</left_val> + <right_val>0.1997981071472168</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 6 9 3 -1.</_> + <_>6 7 9 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.0700280331075191e-003</threshold> + <left_node>1</left_node> + <right_val>0.3938314020633698</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 7 6 1 -1.</_> + <_>12 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1636839481070638e-003</threshold> + <left_val>0.5757436156272888</left_val> + <right_val>0.4239456951618195</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 18 6 -1.</_> + <_>6 0 6 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.2246433943510056</threshold> + <left_node>1</left_node> + <right_val>0.7676553130149841</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 10 2 6 -1.</_> + <_>6 13 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4412109740078449e-003</threshold> + <left_val>0.5353866219520569</left_val> + <right_val>0.2514776885509491</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 12 3 6 -1.</_> + <_>11 15 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0300112497061491</threshold> + <left_val>0.2364903986454010</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 4 12 12 -1.</_> + <_>10 4 6 6 2.</_> + <_>4 10 6 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0530789606273174</threshold> + <left_val>0.2385863959789276</left_val> + <right_val>0.5414664745330811</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 2 3 6 -1.</_> + <_>2 2 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0800929050892591e-003</threshold> + <left_node>1</left_node> + <right_val>0.6511614918708801</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 5 3 7 -1.</_> + <_>2 5 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.0738182142376900e-003</threshold> + <left_val>0.6030414104461670</left_val> + <right_val>0.3587701022624970</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 13 12 4 -1.</_> + <_>10 13 6 2 2.</_> + <_>4 15 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0195293705910444</threshold> + <left_node>1</left_node> + <right_val>0.5423592925071716</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 3 17 12 -1.</_> + <_>3 9 17 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0533094704151154</threshold> + <left_val>0.2360953986644745</left_val> + <right_val>0.5401757955551148</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 3 14 12 -1.</_> + <_>3 3 7 6 2.</_> + <_>10 9 7 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0348495617508888</threshold> + <left_val>0.2836985886096954</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 11 16 9 -1.</_> + <_>2 14 16 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1265845000743866</threshold> + <left_val>0.1813516020774841</left_val> + <right_val>0.5421046018600464</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 3 6 -1.</_> + <_>9 17 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.3325118137290701e-006</threshold> + <left_val>0.3980365991592407</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 14 4 6 -1.</_> + <_>10 14 2 3 2.</_> + <_>8 17 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0118438703939319</threshold> + <left_val>0.2616384923458099</left_val> + <right_val>0.5237730145454407</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 2 6 1 -1.</_> + <_>8 2 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.8470678739249706e-003</threshold> + <left_val>0.2438108026981354</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 5 2 5 -1.</_> + <_>10 5 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1693977117538452e-003</threshold> + <left_val>0.5327146053314209</left_val> + <right_val>0.8190376758575440</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 3 5 -1.</_> + <_>10 8 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.4716790802776814e-003</threshold> + <left_node>1</left_node> + <right_val>0.4679693877696991</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 6 1 -1.</_> + <_>9 12 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5188479665084742e-005</threshold> + <left_val>0.5563911795616150</left_val> + <right_val>0.4367586076259613</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 8 3 5 -1.</_> + <_>9 8 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0696711037307978e-003</threshold> + <left_node>1</left_node> + <right_val>0.6664348840713501</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 10 4 3 -1.</_> + <_>8 10 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6296720423270017e-004</threshold> + <left_val>0.5594611167907715</left_val> + <right_val>0.3042711913585663</right_val></_></_></trees> + <stage_threshold>14.5467500686645510</stage_threshold> + <parent>5</parent> + <next>-1</next></_> + <_> + <!-- stage 7 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 20 6 -1.</_> + <_>0 6 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.8275858908891678e-003</threshold> + <left_node>1</left_node> + <right_val>0.2116018980741501</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 3 8 6 -1.</_> + <_>1 3 4 3 2.</_> + <_>5 6 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1693858802318573e-003</threshold> + <left_val>0.6924685239791870</left_val> + <right_val>0.3043777048587799</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 15 6 4 -1.</_> + <_>7 17 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5341319744475186e-004</threshold> + <left_val>0.3183285892009735</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 10 14 10 -1.</_> + <_>3 15 14 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.8054549843072891e-003</threshold> + <left_val>0.5456559062004089</left_val> + <right_val>0.2522268891334534</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 4 4 4 -1.</_> + <_>8 4 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1071180526632816e-004</threshold> + <left_val>0.2902618050575256</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 20 10 -1.</_> + <_>0 9 20 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8318869881331921e-003</threshold> + <left_val>0.3130455911159515</left_val> + <right_val>0.6884937286376953</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 4 2 14 -1.</_> + <_>9 11 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.5633679443853907e-006</threshold> + <left_node>1</left_node> + <right_val>0.2962465882301331</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 0 16 4 -1.</_> + <_>2 2 16 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.2888139877468348e-004</threshold> + <left_val>0.3099626004695892</left_val> + <right_val>0.5752515196800232</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 12 6 8 -1.</_> + <_>4 12 3 4 2.</_> + <_>7 16 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6209259629249573e-003</threshold> + <left_val>0.3993195891380310</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 5 6 7 -1.</_> + <_>3 5 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.1338958591222763e-003</threshold> + <left_val>0.4827372133731842</left_val> + <right_val>0.7537832856178284</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 7 10 4 -1.</_> + <_>15 7 5 2 2.</_> + <_>10 9 5 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1212290525436401e-003</threshold> + <left_val>0.2616927027702332</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 12 1 -1.</_> + <_>9 8 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5447290390729904e-003</threshold> + <left_val>0.3108702898025513</left_val> + <right_val>0.5491235852241516</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 9 2 2 -1.</_> + <_>9 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.2652782071381807e-004</threshold> + <left_val>0.3239691853523254</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 4 2 4 -1.</_> + <_>9 6 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6596331483451650e-005</threshold> + <left_val>0.6517410874366760</left_val> + <right_val>0.4178912043571472</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 6 3 6 -1.</_> + <_>10 6 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0138827199116349</threshold> + <left_node>1</left_node> + <right_val>0.6771203875541687</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 7 6 4 -1.</_> + <_>15 7 3 2 2.</_> + <_>12 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0493700392544270e-003</threshold> + <left_val>0.4159511029720306</left_val> + <right_val>0.5652891993522644</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 3 6 -1.</_> + <_>9 6 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0182153601199389</threshold> + <left_node>1</left_node> + <right_val>0.7689601182937622</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 6 18 6 -1.</_> + <_>1 6 9 3 2.</_> + <_>10 9 9 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0113345803692937</threshold> + <left_val>0.2873323857784271</left_val> + <right_val>0.4988932907581329</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 1 3 3 -1.</_> + <_>10 1 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1097560897469521e-003</threshold> + <left_node>1</left_node> + <right_val>0.5463008284568787</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 8 5 2 -1.</_> + <_>10 9 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.2612891411408782e-004</threshold> + <left_val>0.3631235063076019</left_val> + <right_val>0.5512552261352539</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 1 3 3 -1.</_> + <_>9 1 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0301548801362514e-003</threshold> + <left_node>1</left_node> + <right_val>0.1143767014145851</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 5 2 -1.</_> + <_>5 9 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.3587709185667336e-004</threshold> + <left_val>0.2891078889369965</left_val> + <right_val>0.5447341799736023</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 8 8 -1.</_> + <_>12 6 4 4 2.</_> + <_>8 10 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.2279507983475924e-004</threshold> + <left_node>1</left_node> + <right_val>0.3023431897163391</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 7 10 2 -1.</_> + <_>5 7 5 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0258371196687222</threshold> + <left_val>0.2167005985975266</left_val> + <right_val>0.5278152823448181</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 5 12 10 -1.</_> + <_>4 5 6 5 2.</_> + <_>10 10 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0217749103903770</threshold> + <left_node>1</left_node> + <right_val>0.3254834115505219</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 2 3 -1.</_> + <_>5 6 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7682299949228764e-003</threshold> + <left_val>0.5263050794601440</left_val> + <right_val>0.7526329159736633</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 14 6 3 -1.</_> + <_>7 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0137938102707267</threshold> + <left_val>0.7410330176353455</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 3 3 -1.</_> + <_>9 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.0852829590439796e-003</threshold> + <left_val>0.6836609840393066</left_val> + <right_val>0.4579071104526520</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 3 3 -1.</_> + <_>8 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.1795017682015896e-003</threshold> + <left_node>1</left_node> + <right_val>0.7449936270713806</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 10 8 9 -1.</_> + <_>1 13 8 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0100303199142218</threshold> + <left_val>0.4860779941082001</left_val> + <right_val>0.2361457049846649</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 3 -1.</_> + <_>9 8 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.4201927743852139e-003</threshold> + <left_val>0.1467327028512955</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 3 3 3 -1.</_> + <_>13 3 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6961281225085258e-003</threshold> + <left_val>0.2347819954156876</left_val> + <right_val>0.5323377251625061</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 3 3 3 -1.</_> + <_>6 3 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.1498160250484943e-003</threshold> + <left_val>0.1477057039737701</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 2 12 -1.</_> + <_>5 10 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4450740311294794e-003</threshold> + <left_val>0.3498533964157105</left_val> + <right_val>0.5803561806678772</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 11 18 4 -1.</_> + <_>10 11 9 2 2.</_> + <_>1 13 9 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0375034101307392</threshold> + <left_node>1</left_node> + <right_val>0.5259550809860230</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 12 6 2 -1.</_> + <_>7 13 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7799441381357610e-004</threshold> + <left_val>0.4362882971763611</left_val> + <right_val>0.6208922863006592</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 0 3 6 -1.</_> + <_>7 0 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0806080475449562e-003</threshold> + <left_val>0.2039460986852646</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 11 18 4 -1.</_> + <_>0 11 9 2 2.</_> + <_>9 13 9 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0328180007636547</threshold> + <left_val>0.5198358893394470</left_val> + <right_val>0.1371196061372757</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 12 6 2 -1.</_> + <_>7 13 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5188988810405135e-004</threshold> + <left_node>1</left_node> + <right_val>0.6323429942131043</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 3 3 -1.</_> + <_>9 13 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6485587954521179e-003</threshold> + <left_val>0.4720163047313690</left_val> + <right_val>0.6567087173461914</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 12 2 3 -1.</_> + <_>9 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9827929791063070e-003</threshold> + <left_val>0.6053060293197632</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 11 4 3 -1.</_> + <_>8 12 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6011310508474708e-003</threshold> + <left_val>0.5090519189834595</left_val> + <right_val>0.3116933107376099</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 3 4 2 -1.</_> + <_>13 4 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.0539939180016518e-003</threshold> + <left_val>0.3429804146289825</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 0 12 2 -1.</_> + <_>4 1 12 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3212040327489376e-004</threshold> + <left_val>0.3838402926921845</left_val> + <right_val>0.5775598287582398</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 9 8 8 -1.</_> + <_>6 9 4 4 2.</_> + <_>10 13 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0274521205574274</threshold> + <left_val>0.2143469005823135</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 11 6 2 -1.</_> + <_>1 12 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.3099439982324839e-004</threshold> + <left_val>0.5952966213226318</left_val> + <right_val>0.3760158121585846</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 5 18 8 -1.</_> + <_>11 5 9 4 2.</_> + <_>2 9 9 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7144189961254597e-003</threshold> + <left_val>0.5692626833915710</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 1 6 10 -1.</_> + <_>7 6 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3701690845191479e-003</threshold> + <left_val>0.5784304141998291</left_val> + <right_val>0.3974282145500183</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 3 6 -1.</_> + <_>0 5 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0189039595425129</threshold> + <left_val>0.1818892955780029</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 5 4 3 -1.</_> + <_>4 6 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.5850871615111828e-003</threshold> + <left_val>0.6849110126495361</left_val> + <right_val>0.4351584017276764</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>19 3 1 6 -1.</_> + <_>19 5 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8810501359403133e-003</threshold> + <left_node>1</left_node> + <right_val>0.2726660966873169</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 15 8 2 -1.</_> + <_>6 16 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0092082498595119e-004</threshold> + <left_val>0.4236431121826172</left_val> + <right_val>0.5844675898551941</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 1 6 -1.</_> + <_>0 5 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8510579830035567e-003</threshold> + <left_node>1</left_node> + <right_val>0.3371320962905884</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 3 3 -1.</_> + <_>5 6 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.3273650594055653e-003</threshold> + <left_val>0.5270221829414368</left_val> + <right_val>0.8053650856018066</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 8 4 3 -1.</_> + <_>8 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3820930402725935e-003</threshold> + <left_val>0.2866018116474152</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 6 6 3 -1.</_> + <_>12 6 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9292969955131412e-003</threshold> + <left_val>0.5888946056365967</left_val> + <right_val>0.3895787000656128</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 2 6 -1.</_> + <_>8 16 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0149952201172709</threshold> + <left_node>1</left_node> + <right_val>0.2177816927433014</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 11 2 8 -1.</_> + <_>9 15 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0263307504355907</threshold> + <left_val>0.1775317043066025</left_val> + <right_val>0.5671470165252686</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 6 6 3 -1.</_> + <_>12 6 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1734222322702408e-003</threshold> + <left_node>1</left_node> + <right_val>0.4652962088584900</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 15 15 5 -1.</_> + <_>10 15 5 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0272683501243591</threshold> + <left_val>0.4768311083316803</left_val> + <right_val>0.5695238709449768</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 14 2 2 -1.</_> + <_>2 15 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.8880263976752758e-004</threshold> + <left_node>1</left_node> + <right_val>0.3397401869297028</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 6 2 -1.</_> + <_>6 7 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0528849670663476e-003</threshold> + <left_val>0.6250041127204895</left_val> + <right_val>0.4288412034511566</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 3 6 1 -1.</_> + <_>10 3 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2288072183728218e-003</threshold> + <left_val>0.5347762107849121</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 0 18 12 -1.</_> + <_>7 0 6 12 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0303954593837261</threshold> + <left_val>0.4115518927574158</left_val> + <right_val>0.5660753846168518</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 14 8 6 -1.</_> + <_>4 14 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0791139304637909</threshold> + <left_val>0.7881323099136353</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 15 15 5 -1.</_> + <_>5 15 5 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0182316694408655</threshold> + <left_val>0.3604339957237244</left_val> + <right_val>0.5569505095481873</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 3 6 1 -1.</_> + <_>10 3 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2288072183728218e-003</threshold> + <left_val>0.5416644215583801</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 11 3 6 -1.</_> + <_>11 14 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3922828626818955e-004</threshold> + <left_val>0.5507156848907471</left_val> + <right_val>0.3882277011871338</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 3 6 1 -1.</_> + <_>8 3 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.6501962505280972e-004</threshold> + <left_val>0.3185850977897644</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 11 3 6 -1.</_> + <_>6 14 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0326979681849480e-003</threshold> + <left_val>0.5578364133834839</left_val> + <right_val>0.3219245970249176</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 6 3 4 -1.</_> + <_>10 6 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.2997747920453548e-003</threshold> + <left_val>0.7073233127593994</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 10 4 7 -1.</_> + <_>12 10 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.3629042385146022e-004</threshold> + <left_val>0.5558015704154968</left_val> + <right_val>0.4613842070102692</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 3 4 -1.</_> + <_>9 6 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.0483231209218502e-003</threshold> + <left_val>0.6869289875030518</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 6 4 7 -1.</_> + <_>6 6 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7529221996665001e-003</threshold> + <left_val>0.4870317876338959</left_val> + <right_val>0.2650370895862579</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 3 4 12 -1.</_> + <_>10 3 2 12 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0530780293047428</threshold> + <left_val>0.5281515121459961</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 8 3 4 -1.</_> + <_>11 8 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0225810110569000e-003</threshold> + <left_val>0.6085882186889648</left_val> + <right_val>0.4304867982864380</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 18 14 -1.</_> + <_>7 0 6 14 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0312706492841244</threshold> + <left_node>1</left_node> + <right_val>0.5445832014083862</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 8 6 11 -1.</_> + <_>5 8 3 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.3522169366478920e-003</threshold> + <left_val>0.5328335762023926</left_val> + <right_val>0.2364324033260346</right_val></_></_></trees> + <stage_threshold>18.5722503662109380</stage_threshold> + <parent>6</parent> + <next>-1</next></_> + <_> + <!-- stage 8 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 4 15 4 -1.</_> + <_>1 6 15 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.2215630896389484e-003</threshold> + <left_node>1</left_node> + <right_val>0.2625581026077271</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 10 8 -1.</_> + <_>5 9 10 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1097389981150627e-003</threshold> + <left_val>0.1564992964267731</left_val> + <right_val>0.6792883276939392</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 2 6 8 -1.</_> + <_>14 2 3 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0108458595350385</threshold> + <left_val>0.3485808968544006</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 6 6 14 -1.</_> + <_>14 6 3 7 2.</_> + <_>11 13 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.4230401767417789e-004</threshold> + <left_val>0.3698255121707916</left_val> + <right_val>0.5921658277511597</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 2 12 -1.</_> + <_>9 11 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.3311722371727228e-004</threshold> + <left_node>1</left_node> + <right_val>0.3007084131240845</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 7 4 6 -1.</_> + <_>3 9 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0134200565516949e-003</threshold> + <left_val>0.3624922931194305</left_val> + <right_val>0.7072426080703735</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 3 6 6 -1.</_> + <_>14 3 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0110935596749187</threshold> + <left_val>0.4416702091693878</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 2 4 4 -1.</_> + <_>15 4 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.9127531498670578e-003</threshold> + <left_val>0.3028708100318909</left_val> + <right_val>0.5417376160621643</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 6 7 -1.</_> + <_>3 2 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0129053099080920</threshold> + <left_val>0.4374504089355469</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 6 6 14 -1.</_> + <_>3 6 3 7 2.</_> + <_>6 13 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2430912144482136e-003</threshold> + <left_val>0.4401589930057526</left_val> + <right_val>0.7565190792083740</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 6 16 8 -1.</_> + <_>4 10 16 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1304309484548867e-004</threshold> + <left_val>0.2310786992311478</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 12 2 8 -1.</_> + <_>10 16 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2308640182018280e-003</threshold> + <left_val>0.3568195998668671</left_val> + <right_val>0.5749999284744263</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 0 6 20 -1.</_> + <_>9 0 2 20 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6400520000606775e-003</threshold> + <left_val>0.3593688905239105</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 7 16 12 -1.</_> + <_>1 7 8 6 2.</_> + <_>9 13 8 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0751010328531265</threshold> + <left_val>0.6363567709922791</left_val> + <right_val>0.2327028959989548</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 11 3 3 -1.</_> + <_>9 12 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.7012968249619007e-003</threshold> + <left_val>0.7074623703956604</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 9 4 5 -1.</_> + <_>11 9 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5588370151817799e-003</threshold> + <left_val>0.5700237154960632</left_val> + <right_val>0.3590450882911682</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 3 1 2 -1.</_> + <_>3 4 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.7687938786111772e-004</threshold> + <left_val>0.2805441021919251</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 17 5 3 -1.</_> + <_>7 18 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.4234727546572685e-004</threshold> + <left_val>0.4125418961048126</left_val> + <right_val>0.6177995800971985</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 4 8 -1.</_> + <_>10 12 2 4 2.</_> + <_>8 16 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0128251099959016</threshold> + <left_node>1</left_node> + <right_val>0.5403078198432922</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 4 10 12 -1.</_> + <_>12 4 5 6 2.</_> + <_>7 10 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.5156567143276334e-004</threshold> + <left_val>0.5633643865585327</left_val> + <right_val>0.3356539011001587</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 4 3 -1.</_> + <_>8 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0120061598718166</threshold> + <left_val>0.7109510898590088</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 9 4 5 -1.</_> + <_>7 9 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3213419588282704e-003</threshold> + <left_val>0.4903850853443146</left_val> + <right_val>0.2824583053588867</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 9 8 2 -1.</_> + <_>9 9 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0203074403107166</threshold> + <left_val>0.1891369968652725</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 15 5 2 -1.</_> + <_>14 16 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.0180929936468601e-003</threshold> + <left_val>0.5377966165542603</left_val> + <right_val>0.3119494915008545</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 2 3 -1.</_> + <_>9 15 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5315311290323734e-003</threshold> + <left_node>1</left_node> + <right_val>0.7206758260726929</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 7 8 4 -1.</_> + <_>1 7 4 2 2.</_> + <_>5 9 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4381739571690559e-003</threshold> + <left_val>0.1854667961597443</left_val> + <right_val>0.4981732964515686</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>19 3 1 2 -1.</_> + <_>19 4 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5692010056227446e-003</threshold> + <left_node>1</left_node> + <right_val>0.2638274133205414</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 2 3 -1.</_> + <_>9 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.9516442231833935e-003</threshold> + <left_val>0.6871067285537720</left_val> + <right_val>0.4714686870574951</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 14 14 4 -1.</_> + <_>3 14 7 2 2.</_> + <_>10 16 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0274296794086695</threshold> + <left_val>0.1548285037279129</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 0 10 2 -1.</_> + <_>5 1 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4181969454512000e-003</threshold> + <left_val>0.4376842975616455</left_val> + <right_val>0.6327368021011353</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 14 4 6 -1.</_> + <_>11 16 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0130789401009679</threshold> + <left_val>0.3166814148426056</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 6 3 -1.</_> + <_>7 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.5092779435217381e-003</threshold> + <left_val>0.6199743747711182</left_val> + <right_val>0.4379687011241913</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 13 6 6 -1.</_> + <_>7 13 3 3 2.</_> + <_>10 16 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0189207307994366</threshold> + <left_node>1</left_node> + <right_val>0.1470714062452316</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 1 6 -1.</_> + <_>0 4 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1683350205421448e-003</threshold> + <left_val>0.5809459090232849</left_val> + <right_val>0.3431949019432068</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 7 8 2 -1.</_> + <_>6 8 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6401590546593070e-003</threshold> + <left_val>0.3959457874298096</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 6 1 -1.</_> + <_>9 7 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4005920093040913e-004</threshold> + <left_val>0.3240025043487549</left_val> + <right_val>0.5646647214889526</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 1 6 10 -1.</_> + <_>7 6 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3137591090053320e-003</threshold> + <left_node>1</left_node> + <right_val>0.4274528026580811</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 6 2 -1.</_> + <_>0 3 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9459029901772738e-003</threshold> + <left_val>0.3341667950153351</left_val> + <right_val>0.6627960205078125</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 4 2 4 -1.</_> + <_>11 4 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3612229668069631e-004</threshold> + <left_val>0.4046927988529205</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 10 3 6 -1.</_> + <_>11 13 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0512032359838486e-004</threshold> + <left_val>0.5484058260917664</left_val> + <right_val>0.3569940924644470</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 9 8 2 -1.</_> + <_>7 9 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0175139904022217</threshold> + <left_val>0.1824150979518890</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 4 6 -1.</_> + <_>2 0 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0187350306659937</threshold> + <left_val>0.7971820235252380</left_val> + <right_val>0.5068569183349609</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 0 6 2 -1.</_> + <_>9 0 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0120656499639153</threshold> + <left_node>1</left_node> + <right_val>0.2167007029056549</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 15 2 3 -1.</_> + <_>9 16 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6544178836047649e-003</threshold> + <left_val>0.6584178805351257</left_val> + <right_val>0.4628243148326874</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 1 2 -1.</_> + <_>3 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4501289697363973e-003</threshold> + <left_node>1</left_node> + <right_val>0.2090252041816711</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 5 11 3 -1.</_> + <_>4 6 11 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0109540196135640</threshold> + <left_val>0.5112305283546448</left_val> + <right_val>0.7784575819969177</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 4 2 4 -1.</_> + <_>11 4 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0157717093825340</threshold> + <left_val>0.5132359266281128</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 3 6 3 -1.</_> + <_>10 3 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0142526896670461</threshold> + <left_val>0.1742414981126785</left_val> + <right_val>0.5267148017883301</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 4 2 4 -1.</_> + <_>8 4 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0411860279855318e-005</threshold> + <left_val>0.3418447971343994</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 6 3 -1.</_> + <_>8 3 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0234862994402647</threshold> + <left_val>0.5631265044212341</left_val> + <right_val>0.2006393969058991</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 4 4 3 -1.</_> + <_>11 5 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2205449901521206e-003</threshold> + <left_node>1</left_node> + <right_val>0.6249648928642273</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 8 2 8 -1.</_> + <_>11 12 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0258124303072691</threshold> + <left_val>0.3203228116035461</left_val> + <right_val>0.5199329853057861</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 3 5 -1.</_> + <_>9 7 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9526650430634618e-003</threshold> + <left_val>0.6140705943107605</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 2 5 -1.</_> + <_>10 7 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.1470049917697906e-003</threshold> + <left_val>0.6592895984649658</left_val> + <right_val>0.3711124956607819</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 11 1 6 -1.</_> + <_>14 13 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2962448894977570e-003</threshold> + <left_node>1</left_node> + <right_val>0.2952111959457398</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 4 3 -1.</_> + <_>8 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3961310032755136e-003</threshold> + <left_val>0.3320803940296173</left_val> + <right_val>0.5528414845466614</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 2 2 -1.</_> + <_>0 4 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1055441834032536e-003</threshold> + <left_val>0.1710550040006638</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 14 5 6 -1.</_> + <_>4 16 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0108887795358896</threshold> + <left_val>0.3359434902667999</left_val> + <right_val>0.5674905180931091</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 4 4 3 -1.</_> + <_>11 5 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.6768421567976475e-003</threshold> + <left_node>1</left_node> + <right_val>0.4773241877555847</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 4 3 3 -1.</_> + <_>12 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.7729787230491638e-003</threshold> + <left_val>0.8081045150756836</left_val> + <right_val>0.4845828115940094</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 4 4 3 -1.</_> + <_>5 5 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0439710505306721e-003</threshold> + <left_node>1</left_node> + <right_val>0.6784002184867859</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 15 4 2 -1.</_> + <_>7 15 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.6134641161188483e-004</threshold> + <left_val>0.5514639019966126</left_val> + <right_val>0.3642359972000122</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 1 5 9 -1.</_> + <_>15 4 5 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0579923614859581</threshold> + <left_node>1</left_node> + <right_val>0.1254435032606125</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 10 3 3 -1.</_> + <_>9 11 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.9384980704635382e-004</threshold> + <left_val>0.4424878954887390</left_val> + <right_val>0.5728461742401123</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 6 2 6 -1.</_> + <_>1 8 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.2353480607271194e-003</threshold> + <left_val>0.2805041968822479</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 4 8 15 -1.</_> + <_>2 9 8 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0127849299460649</threshold> + <left_val>0.1950912028551102</left_val> + <right_val>0.5652924776077271</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 12 3 2 -1.</_> + <_>9 13 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1973669431172311e-004</threshold> + <left_node>1</left_node> + <right_val>0.6166483759880066</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 3 3 -1.</_> + <_>9 13 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0646801507100463e-004</threshold> + <left_val>0.4526579976081848</left_val> + <right_val>0.5944486856460571</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 6 3 5 -1.</_> + <_>8 6 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6339010326191783e-003</threshold> + <left_node>1</left_node> + <right_val>0.4086942076683044</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 3 6 2 -1.</_> + <_>7 3 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.8299999907612801e-003</threshold> + <left_val>0.2793526947498322</left_val> + <right_val>0.6444935202598572</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 1 8 10 -1.</_> + <_>10 1 4 5 2.</_> + <_>6 6 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.3992068171501160e-003</threshold> + <left_node>1</left_node> + <right_val>0.5671656131744385</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 20 10 -1.</_> + <_>10 0 10 5 2.</_> + <_>0 5 10 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1081919968128204</threshold> + <left_val>0.5311812162399292</left_val> + <right_val>0.2614356875419617</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 3 3 1 -1.</_> + <_>7 3 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5056560561060905e-004</threshold> + <left_node>1</left_node> + <right_val>0.2996774017810822</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 6 8 -1.</_> + <_>2 2 2 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0206112507730722</threshold> + <left_val>0.4489943087100983</left_val> + <right_val>0.6888279914855957</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 10 3 4 -1.</_> + <_>11 12 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0251290500164032</threshold> + <left_node>1</left_node> + <right_val>0.5196864008903503</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 6 3 8 -1.</_> + <_>12 10 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7922939732670784e-003</threshold> + <left_val>0.3466995954513550</left_val> + <right_val>0.5533587932586670</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 10 3 4 -1.</_> + <_>6 12 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5626220265403390e-003</threshold> + <left_node>1</left_node> + <right_val>0.3081440031528473</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 3 8 -1.</_> + <_>5 10 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.1898730928078294e-004</threshold> + <left_val>0.2693870961666107</left_val> + <right_val>0.5544489026069641</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 6 18 6 -1.</_> + <_>11 6 9 3 2.</_> + <_>2 9 9 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.8111421056091785e-003</threshold> + <left_val>0.5587847828865051</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 7 3 -1.</_> + <_>7 15 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2484229411929846e-003</threshold> + <left_val>0.4672113060951233</left_val> + <right_val>0.6090825200080872</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 2 12 -1.</_> + <_>1 0 1 12 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0301472395658493</threshold> + <left_val>0.9027591943740845</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 2 18 16 -1.</_> + <_>1 10 18 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.2754867970943451</threshold> + <left_val>0.4719834923744202</left_val> + <right_val>0.2196920067071915</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 13 5 3 -1.</_> + <_>9 14 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6894630175083876e-003</threshold> + <left_node>1</left_node> + <right_val>0.6273009181022644</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 4 3 -1.</_> + <_>8 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.2957701049745083e-003</threshold> + <left_val>0.4839217960834503</left_val> + <right_val>0.6909062266349793</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 18 6 -1.</_> + <_>0 6 9 3 2.</_> + <_>9 9 9 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0562110692262650</threshold> + <left_val>0.1738487929105759</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 6 3 -1.</_> + <_>7 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6478560175746679e-003</threshold> + <left_val>0.6304144859313965</left_val> + <right_val>0.4474301934242249</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>17 4 1 3 -1.</_> + <_>17 5 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4534000074490905e-003</threshold> + <left_node>1</left_node> + <right_val>0.5302538275718689</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 11 1 9 -1.</_> + <_>12 14 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8540920466184616e-003</threshold> + <left_val>0.5338397026062012</left_val> + <right_val>0.3796882927417755</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 4 1 3 -1.</_> + <_>2 5 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8243022067472339e-004</threshold> + <left_node>1</left_node> + <right_val>0.3269836902618408</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 2 3 -1.</_> + <_>5 5 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.2509482055902481e-004</threshold> + <left_val>0.4554812014102936</left_val> + <right_val>0.6358348131179810</right_val></_></_></trees> + <stage_threshold>21.5781192779541020</stage_threshold> + <parent>7</parent> + <next>-1</next></_> + <_> + <!-- stage 9 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 2 18 3 -1.</_> + <_>7 2 6 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0198064409196377</threshold> + <left_val>0.2809725105762482</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 1 20 6 -1.</_> + <_>0 3 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.0395611692219973e-004</threshold> + <left_val>0.3119826018810272</left_val> + <right_val>0.7090306282043457</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 5 6 3 -1.</_> + <_>9 5 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.5563780218362808e-003</threshold> + <left_val>0.2981947958469391</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 7 6 4 -1.</_> + <_>16 7 3 2 2.</_> + <_>13 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0824160417541862e-003</threshold> + <left_val>0.3020560145378113</left_val> + <right_val>0.5808811187744141</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 1 4 10 -1.</_> + <_>3 1 2 5 2.</_> + <_>5 6 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.2893769033253193e-004</threshold> + <left_node>1</left_node> + <right_val>0.3738102912902832</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 19 10 -1.</_> + <_>0 9 19 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0180097296833992</threshold> + <left_val>0.2163126021623612</left_val> + <right_val>0.6619253754615784</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 3 12 -1.</_> + <_>9 12 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3500190582126379e-003</threshold> + <left_node>1</left_node> + <right_val>0.2910403907299042</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 18 5 2 -1.</_> + <_>11 19 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1822491483762860e-004</threshold> + <left_val>0.5578622817993164</left_val> + <right_val>0.3366627991199493</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 16 6 4 -1.</_> + <_>5 16 3 2 2.</_> + <_>8 18 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.2095321482047439e-004</threshold> + <left_val>0.4072425961494446</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 18 3 2 -1.</_> + <_>5 19 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.6780969761312008e-004</threshold> + <left_val>0.6859595775604248</left_val> + <right_val>0.3105461895465851</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 11 3 2 -1.</_> + <_>13 12 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.8000211245380342e-004</threshold> + <left_node>1</left_node> + <right_val>0.3337332904338837</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 5 8 4 -1.</_> + <_>8 5 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0538640506565571e-005</threshold> + <left_val>0.3370958864688873</left_val> + <right_val>0.5451210737228394</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 2 18 6 -1.</_> + <_>1 2 9 3 2.</_> + <_>10 5 9 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0439147986471653</threshold> + <left_val>0.2625670135021210</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 5 14 6 -1.</_> + <_>3 7 14 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6501338258385658e-003</threshold> + <left_val>0.6050462722778320</left_val> + <right_val>0.3232415020465851</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 1 2 6 -1.</_> + <_>18 3 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8661491125822067e-003</threshold> + <left_node>1</left_node> + <right_val>0.3262613117694855</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 11 6 1 -1.</_> + <_>11 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.3069426687434316e-005</threshold> + <left_val>0.5817307829856873</left_val> + <right_val>0.4164389967918396</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 6 11 -1.</_> + <_>3 2 3 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0525337383151054</threshold> + <left_node>1</left_node> + <right_val>0.7095398902893066</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 12 2 3 -1.</_> + <_>4 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3818660518154502e-003</threshold> + <left_val>0.5292875766754150</left_val> + <right_val>0.2541388869285584</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 12 9 2 -1.</_> + <_>9 12 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.9264067355543375e-004</threshold> + <left_node>1</left_node> + <right_val>0.4085341095924377</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 4 6 15 -1.</_> + <_>9 4 3 15 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0855795070528984</threshold> + <left_val>0.5263236165046692</left_val> + <right_val>0.3003202974796295</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 11 6 1 -1.</_> + <_>7 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8343339615967125e-004</threshold> + <left_node>1</left_node> + <right_val>0.4029205143451691</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 6 15 -1.</_> + <_>8 4 3 15 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.7924815490841866e-003</threshold> + <left_val>0.3521319925785065</left_val> + <right_val>0.6664004921913147</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 12 6 7 -1.</_> + <_>14 12 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0144286202266812</threshold> + <left_val>0.4593566060066223</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>18 3 2 9 -1.</_> + <_>18 6 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0456870011985302</threshold> + <left_val>0.1474756002426148</left_val> + <right_val>0.5178632140159607</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 1 3 1 -1.</_> + <_>9 1 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5763090234249830e-003</threshold> + <left_val>0.1837278008460999</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 12 6 7 -1.</_> + <_>3 12 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0383018590509892</threshold> + <left_val>0.8082658052444458</left_val> + <right_val>0.5166687965393066</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 7 6 4 -1.</_> + <_>16 7 3 2 2.</_> + <_>13 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8978290501981974e-003</threshold> + <left_val>0.4798013865947723</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 0 10 2 -1.</_> + <_>8 1 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5165060069411993e-003</threshold> + <left_val>0.3346295952796936</left_val> + <right_val>0.5444449186325073</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 7 6 4 -1.</_> + <_>1 7 3 2 2.</_> + <_>4 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.6281982688233256e-004</threshold> + <left_val>0.3589026927947998</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 2 3 3 -1.</_> + <_>1 3 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6684391088783741e-003</threshold> + <left_val>0.5983129739761353</left_val> + <right_val>0.2983964085578919</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 13 4 3 -1.</_> + <_>9 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1319789811968803e-003</threshold> + <left_node>1</left_node> + <right_val>0.6163223981857300</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 13 7 2 -1.</_> + <_>12 14 7 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.6037310063838959e-003</threshold> + <left_val>0.5217130184173584</left_val> + <right_val>0.2054159045219421</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 12 9 2 -1.</_> + <_>8 12 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1668079969240353e-004</threshold> + <left_node>1</left_node> + <right_val>0.3446668982505798</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 10 4 8 -1.</_> + <_>6 14 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.1659509986639023e-003</threshold> + <left_val>0.5597484707832336</left_val> + <right_val>0.2673786878585815</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 18 4 -1.</_> + <_>7 0 6 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0225694999098778</threshold> + <left_val>0.6900268197059631</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 0 5 2 -1.</_> + <_>12 1 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7129601221531630e-004</threshold> + <left_val>0.4486638903617859</left_val> + <right_val>0.5508785247802734</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 1 12 -1.</_> + <_>7 13 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0154344597831368</threshold> + <left_val>0.2048323005437851</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 2 3 4 -1.</_> + <_>7 2 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.4861656650900841e-003</threshold> + <left_val>0.1254952996969223</left_val> + <right_val>0.5060356259346008</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 13 20 6 -1.</_> + <_>0 15 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1180747002363205</threshold> + <left_val>0.0676330626010895</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 5 12 2 -1.</_> + <_>14 5 6 1 2.</_> + <_>8 6 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2300079688429832e-003</threshold> + <left_val>0.5660700798034668</left_val> + <right_val>0.4292201101779938</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 2 3 -1.</_> + <_>8 15 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0290351286530495e-003</threshold> + <left_val>0.7136403918266296</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 14 4 3 -1.</_> + <_>8 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.9325206354260445e-003</threshold> + <left_val>0.4338876008987427</left_val> + <right_val>0.7060875296592712</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 13 7 6 -1.</_> + <_>12 15 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0477359816431999</threshold> + <left_node>1</left_node> + <right_val>0.5268685221672058</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 0 8 12 -1.</_> + <_>10 0 4 6 2.</_> + <_>6 6 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0441555790603161</threshold> + <left_val>0.2580580115318298</left_val> + <right_val>0.5406960844993591</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 15 9 4 -1.</_> + <_>0 17 9 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0259834807366133</threshold> + <left_val>0.1905054003000259</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 0 2 5 -1.</_> + <_>10 0 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.7885831445455551e-003</threshold> + <left_val>0.2551892995834351</left_val> + <right_val>0.5339077115058899</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 2 6 -1.</_> + <_>9 5 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7423451691865921e-003</threshold> + <left_val>0.4693309962749481</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>17 2 3 6 -1.</_> + <_>17 4 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0116547504439950</threshold> + <left_val>0.5261964201927185</left_val> + <right_val>0.3145434856414795</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 11 2 3 -1.</_> + <_>3 12 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6982729583978653e-003</threshold> + <left_val>0.1756853014230728</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 3 3 -1.</_> + <_>7 14 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.2983349673449993e-003</threshold> + <left_val>0.7774729728698731</left_val> + <right_val>0.5124292969703674</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 12 5 3 -1.</_> + <_>14 13 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.9091778025031090e-003</threshold> + <left_val>0.5284559726715088</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 8 14 3 -1.</_> + <_>4 9 14 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5874979726504534e-004</threshold> + <left_val>0.3887802064418793</left_val> + <right_val>0.5501173734664917</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 12 5 3 -1.</_> + <_>1 13 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.2235877849161625e-003</threshold> + <left_val>0.2489829063415527</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 15 12 2 -1.</_> + <_>1 15 6 1 2.</_> + <_>7 16 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3308860361576080e-003</threshold> + <left_val>0.4262146055698395</left_val> + <right_val>0.5935062170028687</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 11 4 2 -1.</_> + <_>12 12 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2055278792977333e-003</threshold> + <left_node>1</left_node> + <right_val>0.2545222938060761</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 8 3 5 -1.</_> + <_>10 8 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0140651697292924</threshold> + <left_val>0.4851990044116974</left_val> + <right_val>0.7021418809890747</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 2 6 -1.</_> + <_>10 5 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.7384149879217148e-003</threshold> + <left_val>0.7143270969390869</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 3 6 -1.</_> + <_>0 4 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.3406780567020178e-003</threshold> + <left_val>0.5175725221633911</left_val> + <right_val>0.2808643877506256</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 11 4 2 -1.</_> + <_>12 12 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0118806995451450</threshold> + <left_node>1</left_node> + <right_val>0.5173221826553345</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 3 5 -1.</_> + <_>10 7 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4226379571482539e-003</threshold> + <left_val>0.4502865970134735</left_val> + <right_val>0.5795695185661316</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 11 4 2 -1.</_> + <_>4 12 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9858129564672709e-003</threshold> + <left_node>1</left_node> + <right_val>0.1915116012096405</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 3 5 -1.</_> + <_>9 8 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0481580868363380e-003</threshold> + <left_val>0.6502432227134705</left_val> + <right_val>0.4559315145015717</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 3 3 1 -1.</_> + <_>10 3 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7122729914262891e-003</threshold> + <left_val>0.5376247167587280</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 5 3 8 -1.</_> + <_>17 5 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0169808696955442</threshold> + <left_val>0.7056233286857605</left_val> + <right_val>0.4914605915546417</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 3 3 1 -1.</_> + <_>9 3 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1290470138192177e-003</threshold> + <left_val>0.2678706049919128</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 5 3 8 -1.</_> + <_>2 5 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8620059601962566e-003</threshold> + <left_val>0.4410853981971741</left_val> + <right_val>0.6368319988250732</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 1 3 3 -1.</_> + <_>11 1 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.8065758999437094e-003</threshold> + <left_val>0.2763563990592957</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>17 5 2 4 -1.</_> + <_>17 5 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.9090270660817623e-003</threshold> + <left_val>0.4867301881313324</left_val> + <right_val>0.6728776097297669</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 8 14 3 -1.</_> + <_>2 9 14 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1004370171576738e-003</threshold> + <left_val>0.4070514142513275</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 1 3 -1.</_> + <_>9 8 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3396299220621586e-003</threshold> + <left_val>0.2604948878288269</left_val> + <right_val>0.6154860258102417</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 1 8 10 -1.</_> + <_>6 6 8 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6068160552531481e-003</threshold> + <left_val>0.5731999874114990</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 0 6 8 -1.</_> + <_>16 0 3 4 2.</_> + <_>13 4 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0408311896026134</threshold> + <left_val>0.4973376989364624</left_val> + <right_val>0.7387006878852844</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 5 2 4 -1.</_> + <_>2 5 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.1082250215113163e-003</threshold> + <left_val>0.6984751224517822</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 2 12 2 -1.</_> + <_>4 3 12 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.3759730225428939e-004</threshold> + <left_val>0.2691167891025543</left_val> + <right_val>0.4741779863834381</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 8 4 4 -1.</_> + <_>8 10 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6740820137783885e-003</threshold> + <left_val>0.3551014065742493</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 12 4 -1.</_> + <_>9 6 4 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0882877036929131</threshold> + <left_val>0.5244613885879517</left_val> + <right_val>0.2096650004386902</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 2 8 1 -1.</_> + <_>5 2 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.2009629113599658e-004</threshold> + <left_val>0.4131096899509430</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 1 6 10 -1.</_> + <_>3 1 2 10 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.6624617213383317e-004</threshold> + <left_val>0.4620293080806732</left_val> + <right_val>0.6775410175323486</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 8 2 -1.</_> + <_>8 6 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5769668435677886e-004</threshold> + <left_node>1</left_node> + <right_val>0.5628275275230408</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 7 6 6 -1.</_> + <_>12 7 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1304790861904621e-003</threshold> + <left_val>0.5576859712600708</left_val> + <right_val>0.4577650129795075</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 6 8 2 -1.</_> + <_>8 6 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.7317050737328827e-004</threshold> + <left_node>1</left_node> + <right_val>0.4959256052970886</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 6 6 -1.</_> + <_>6 7 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0111722303554416</threshold> + <left_val>0.5625635981559753</left_val> + <right_val>0.2047107964754105</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 14 16 4 -1.</_> + <_>3 16 16 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0434352196753025</threshold> + <left_node>1</left_node> + <right_val>0.2242148071527481</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 4 2 -1.</_> + <_>8 13 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.6736161503940821e-004</threshold> + <left_val>0.4533343911170960</left_val> + <right_val>0.6199932098388672</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 3 3 -1.</_> + <_>8 13 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1452889088541269e-003</threshold> + <left_val>0.6662756204605103</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 12 6 1 -1.</_> + <_>8 12 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5233129961416125e-003</threshold> + <left_val>0.5007988214492798</left_val> + <right_val>0.2384992986917496</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 10 2 3 -1.</_> + <_>18 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0854279864579439e-003</threshold> + <left_node>1</left_node> + <right_val>0.3753500878810883</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 8 4 6 -1.</_> + <_>16 10 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0360982008278370</threshold> + <left_val>0.5177171230316162</left_val> + <right_val>0.1634493023157120</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 3 2 1 -1.</_> + <_>9 3 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6179570229724050e-003</threshold> + <left_node>1</left_node> + <right_val>0.2587381899356842</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 1 3 9 -1.</_> + <_>8 1 1 9 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.2132300809025764e-004</threshold> + <left_val>0.6299533843994141</left_val> + <right_val>0.4658789932727814</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 11 11 6 -1.</_> + <_>5 14 11 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.1878539165481925e-004</threshold> + <left_node>1</left_node> + <right_val>0.3354076147079468</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 2 3 14 -1.</_> + <_>12 9 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0393395200371742</threshold> + <left_val>0.2154128998517990</left_val> + <right_val>0.5235713720321655</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 3 3 -1.</_> + <_>9 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0988829890266061e-003</threshold> + <left_val>0.6468896865844727</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 5 12 5 -1.</_> + <_>7 5 4 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1191420964896679e-003</threshold> + <left_val>0.2893089056015015</left_val> + <right_val>0.5254815816879273</right_val></_></_></trees> + <stage_threshold>22.5852909088134770</stage_threshold> + <parent>8</parent> + <next>-1</next></_> + <_> + <!-- stage 10 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 2 6 3 -1.</_> + <_>4 2 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2359891124069691e-003</threshold> + <left_val>0.3299711048603058</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 6 10 -1.</_> + <_>5 5 3 5 2.</_> + <_>8 10 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2169889416545630e-003</threshold> + <left_val>0.7041593194007874</left_val> + <right_val>0.3235465884208679</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 18 2 2 -1.</_> + <_>16 18 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.2303592935204506e-003</threshold> + <left_node>1</left_node> + <right_val>0.4961170852184296</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 18 2 2 -1.</_> + <_>16 18 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.2303592935204506e-003</threshold> + <left_val>0.7128043174743652</left_val> + <right_val>0.4961170852184296</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 4 2 5 -1.</_> + <_>9 4 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5343261444941163e-004</threshold> + <left_val>0.3208472132682800</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 4 1 4 -1.</_> + <_>8 6 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1777061414904892e-004</threshold> + <left_val>0.6613916754722595</left_val> + <right_val>0.3551332950592041</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 15 12 4 -1.</_> + <_>13 15 6 2 2.</_> + <_>7 17 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7823769487440586e-003</threshold> + <left_val>0.3710134923458099</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 18 6 2 -1.</_> + <_>11 19 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.0361868236213923e-005</threshold> + <left_val>0.5746393799781799</left_val> + <right_val>0.3894880115985870</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 4 10 -1.</_> + <_>7 12 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5061789676547050e-003</threshold> + <left_node>1</left_node> + <right_val>0.3054102957248688</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 10 8 -1.</_> + <_>5 10 10 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7013119941111654e-004</threshold> + <left_val>0.2885577976703644</left_val> + <right_val>0.6487745046615601</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 1 6 12 -1.</_> + <_>14 1 3 6 2.</_> + <_>11 7 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3378930054605007e-003</threshold> + <left_node>1</left_node> + <right_val>0.3174431025981903</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 12 1 -1.</_> + <_>9 8 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1369170863181353e-003</threshold> + <left_val>0.3820919990539551</left_val> + <right_val>0.5232893228530884</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 7 3 6 -1.</_> + <_>4 9 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0250400518998504e-003</threshold> + <left_val>0.3622795045375824</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 11 3 4 -1.</_> + <_>4 13 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4726220949087292e-005</threshold> + <left_val>0.6538959145545960</left_val> + <right_val>0.4003680944442749</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 16 2 2 -1.</_> + <_>14 17 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.7102291611954570e-004</threshold> + <left_node>1</left_node> + <right_val>0.3893173038959503</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 15 2 2 -1.</_> + <_>15 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.7743012439459562e-004</threshold> + <left_val>0.5614532828330994</left_val> + <right_val>0.3687644004821777</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 12 6 2 -1.</_> + <_>7 13 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.9692091094329953e-004</threshold> + <left_node>1</left_node> + <right_val>0.6443027853965759</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 4 2 -1.</_> + <_>8 14 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5945948911830783e-004</threshold> + <left_val>0.3380852937698364</left_val> + <right_val>0.5824648141860962</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 1 6 12 -1.</_> + <_>14 1 3 6 2.</_> + <_>11 7 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3973900028504431e-004</threshold> + <left_node>1</left_node> + <right_val>0.3938767015933991</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 2 4 2 -1.</_> + <_>12 3 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.9061429025605321e-004</threshold> + <left_val>0.3427971005439758</left_val> + <right_val>0.5515698790550232</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 10 12 6 -1.</_> + <_>3 10 6 3 2.</_> + <_>9 13 6 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.4110242053866386e-003</threshold> + <left_node>1</left_node> + <right_val>0.3803538084030151</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 1 6 12 -1.</_> + <_>3 1 3 6 2.</_> + <_>6 7 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5764907998964190e-004</threshold> + <left_val>0.6439505219459534</left_val> + <right_val>0.4168345928192139</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 6 4 14 -1.</_> + <_>18 6 2 7 2.</_> + <_>16 13 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0220006499439478</threshold> + <left_val>0.6654601097106934</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 1 10 8 -1.</_> + <_>10 1 5 4 2.</_> + <_>5 5 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8731682151556015e-003</threshold> + <left_val>0.4182722866535187</left_val> + <right_val>0.5604724287986755</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 4 14 -1.</_> + <_>0 6 2 7 2.</_> + <_>2 13 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0274444594979286</threshold> + <left_val>0.6586862802505493</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 15 12 4 -1.</_> + <_>1 15 6 2 2.</_> + <_>7 17 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9792269449681044e-003</threshold> + <left_val>0.3244912028312683</left_val> + <right_val>0.4882870018482208</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 17 3 3 -1.</_> + <_>11 17 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6783691979944706e-003</threshold> + <left_val>0.2229079008102417</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 2 2 6 -1.</_> + <_>12 2 1 3 2.</_> + <_>11 5 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5057219570735469e-005</threshold> + <left_val>0.4107285141944885</left_val> + <right_val>0.5747591257095337</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 17 3 3 -1.</_> + <_>8 17 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4136710241436958e-003</threshold> + <left_val>0.2065797001123428</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 15 4 3 -1.</_> + <_>8 16 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3679239936172962e-003</threshold> + <left_val>0.4926423132419586</left_val> + <right_val>0.7139484882354736</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 15 4 2 -1.</_> + <_>12 15 2 1 2.</_> + <_>10 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1426660716533661e-003</threshold> + <left_val>0.6780086755752564</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 13 4 3 -1.</_> + <_>13 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0109073901548982</threshold> + <left_val>0.5214930176734924</left_val> + <right_val>0.1143995970487595</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 13 4 3 -1.</_> + <_>3 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8436761610209942e-003</threshold> + <left_node>1</left_node> + <right_val>0.1937526017427445</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 2 2 6 -1.</_> + <_>7 2 1 3 2.</_> + <_>8 5 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0507230197545141e-005</threshold> + <left_val>0.3812577128410339</left_val> + <right_val>0.5514187812805176</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 1 16 3 -1.</_> + <_>2 2 16 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0163457896560431</threshold> + <left_val>0.2474023997783661</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 15 4 2 -1.</_> + <_>12 15 2 1 2.</_> + <_>10 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5987500082701445e-003</threshold> + <left_val>0.4817782938480377</left_val> + <right_val>0.5923079848289490</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 15 4 2 -1.</_> + <_>6 15 2 1 2.</_> + <_>8 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.0257978253066540e-003</threshold> + <left_val>0.7508208751678467</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 0 13 3 -1.</_> + <_>3 1 13 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.7750471644103527e-003</threshold> + <left_val>0.2879810929298401</left_val> + <right_val>0.5199695229530335</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 9 20 3 -1.</_> + <_>0 10 20 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2470689620822668e-003</threshold> + <left_val>0.3044910132884979</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 9 2 -1.</_> + <_>6 8 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5409620245918632e-003</threshold> + <left_val>0.4063482880592346</left_val> + <right_val>0.5676562786102295</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 3 6 -1.</_> + <_>9 14 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0128581197932363</threshold> + <left_val>0.0967175588011742</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 10 2 2 -1.</_> + <_>9 11 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4824670506641269e-004</threshold> + <left_val>0.4537833034992218</left_val> + <right_val>0.6115375161170960</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 5 -1.</_> + <_>9 7 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.0210810303688049e-003</threshold> + <left_node>1</left_node> + <right_val>0.4807750880718231</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 10 3 -1.</_> + <_>5 6 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0287950299680233</threshold> + <left_val>0.3403795063495636</left_val> + <right_val>0.5255529284477234</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 5 -1.</_> + <_>10 7 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0210810303688049e-003</threshold> + <left_node>1</left_node> + <right_val>0.7505835890769959</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 10 3 -1.</_> + <_>10 6 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4121179059147835e-003</threshold> + <left_val>0.5455446839332581</left_val> + <right_val>0.3226068913936615</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 9 2 2 -1.</_> + <_>13 9 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.7217529024928808e-003</threshold> + <left_val>0.2311848998069763</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 3 12 11 -1.</_> + <_>8 3 4 11 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1986588984727860</threshold> + <left_val>0.5271047949790955</left_val> + <right_val>0.1469929963350296</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 1 2 7 -1.</_> + <_>8 1 1 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5208719560177997e-005</threshold> + <left_val>0.3678138852119446</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 4 3 8 -1.</_> + <_>8 4 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9089918136596680e-003</threshold> + <left_val>0.7131929993629456</left_val> + <right_val>0.4993866980075836</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 9 2 2 -1.</_> + <_>13 9 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.5106288958340883e-003</threshold> + <left_val>0.5312054157257080</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 6 2 2 -1.</_> + <_>12 6 1 1 2.</_> + <_>11 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3921660613268614e-004</threshold> + <left_val>0.4689378142356873</left_val> + <right_val>0.5714021921157837</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 4 2 3 -1.</_> + <_>5 5 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.9443131797015667e-003</threshold> + <left_node>1</left_node> + <right_val>0.6948797702789307</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 5 1 3 -1.</_> + <_>6 6 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2065629707649350e-003</threshold> + <left_val>0.4004504978656769</left_val> + <right_val>0.5874881744384766</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 9 2 2 -1.</_> + <_>13 9 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.5106288958340883e-003</threshold> + <left_val>0.5329571962356567</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 14 3 3 -1.</_> + <_>16 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7514040227979422e-003</threshold> + <left_val>0.5545849204063416</left_val> + <right_val>0.3449581861495972</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 9 2 2 -1.</_> + <_>6 9 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1978210210800171e-003</threshold> + <left_val>0.1217183023691177</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 14 3 3 -1.</_> + <_>1 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3092850567772985e-003</threshold> + <left_val>0.5375049710273743</left_val> + <right_val>0.3415625095367432</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 1 1 6 -1.</_> + <_>13 3 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7396182566881180e-004</threshold> + <left_val>0.4195179045200348</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 3 7 2 -1.</_> + <_>13 4 7 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0105307102203369</threshold> + <left_val>0.3460753858089447</left_val> + <right_val>0.5155860185623169</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 20 14 -1.</_> + <_>0 13 20 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.4067229926586151</threshold> + <left_val>0.0580656789243221</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 3 6 -1.</_> + <_>0 6 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0263145491480827</threshold> + <left_val>0.1473449021577835</left_val> + <right_val>0.5559378266334534</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 1 9 6 -1.</_> + <_>10 3 9 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2557149641215801e-003</threshold> + <left_node>1</left_node> + <right_val>0.5477715134620667</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 0 12 5 -1.</_> + <_>8 0 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0121548604220152</threshold> + <left_val>0.4207791090011597</left_val> + <right_val>0.5621880888938904</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 18 5 -1.</_> + <_>6 0 6 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0184365399181843</threshold> + <left_val>0.6447147130966187</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 1 9 6 -1.</_> + <_>1 3 9 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3676147945225239e-004</threshold> + <left_val>0.2765127122402191</left_val> + <right_val>0.4888595938682556</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 15 2 2 -1.</_> + <_>15 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6265541091561317e-003</threshold> + <left_node>1</left_node> + <right_val>0.5264691114425659</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 16 3 4 -1.</_> + <_>13 18 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.1119807176291943e-004</threshold> + <left_val>0.5785310268402100</left_val> + <right_val>0.4291102886199951</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 15 2 2 -1.</_> + <_>3 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1454841266386211e-004</threshold> + <left_node>1</left_node> + <right_val>0.3455410897731781</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 16 3 4 -1.</_> + <_>4 18 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.5028748465701938e-004</threshold> + <left_val>0.6026918888092041</left_val> + <right_val>0.4143893122673035</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 14 1 3 -1.</_> + <_>11 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0347720235586166e-003</threshold> + <left_val>0.6095293760299683</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 13 5 3 -1.</_> + <_>9 14 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3966631162911654e-003</threshold> + <left_val>0.6108282208442688</left_val> + <right_val>0.4707720875740051</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 3 6 -1.</_> + <_>0 2 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.1795909162610769e-003</threshold> + <left_node>1</left_node> + <right_val>0.3244366943836212</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 1 6 3 -1.</_> + <_>6 1 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6528950072824955e-004</threshold> + <left_val>0.3830757141113281</left_val> + <right_val>0.5734326243400574</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 13 4 3 -1.</_> + <_>9 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.3725210279226303e-003</threshold> + <left_node>1</left_node> + <right_val>0.6610919237136841</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 15 5 3 -1.</_> + <_>8 16 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5799809955060482e-003</threshold> + <left_val>0.6139307022094727</left_val> + <right_val>0.4686149954795837</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 3 3 2 -1.</_> + <_>9 3 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0194388758391142e-004</threshold> + <left_node>1</left_node> + <right_val>0.3520022034645081</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 8 18 2 -1.</_> + <_>1 9 18 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6952210939489305e-004</threshold> + <left_val>0.2578754127025604</left_val> + <right_val>0.5467242002487183</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 14 1 3 -1.</_> + <_>11 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.9746137857437134e-004</threshold> + <left_val>0.4820146858692169</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 6 3 -1.</_> + <_>8 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6688039544969797e-003</threshold> + <left_val>0.5710150003433228</left_val> + <right_val>0.4831911027431488</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 1 3 -1.</_> + <_>8 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.9501030743122101e-004</threshold> + <left_val>0.6133679151535034</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 13 12 4 -1.</_> + <_>4 13 6 2 2.</_> + <_>10 15 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.1904921419918537e-003</threshold> + <left_val>0.4928582906723023</left_val> + <right_val>0.2581309080123901</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 7 2 2 -1.</_> + <_>10 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.2274440056644380e-004</threshold> + <left_val>0.4471124112606049</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 4 2 8 -1.</_> + <_>14 4 1 4 2.</_> + <_>13 8 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.5176713764667511e-003</threshold> + <left_val>0.5161024928092957</left_val> + <right_val>0.3316533863544464</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 5 4 6 -1.</_> + <_>0 7 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0366236083209515</threshold> + <left_val>0.0926062166690826</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 2 2 -1.</_> + <_>9 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1103712283074856e-003</threshold> + <left_val>0.8522114753723145</left_val> + <right_val>0.5137907862663269</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 0 3 7 -1.</_> + <_>14 0 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.6017331555485725e-003</threshold> + <left_node>1</left_node> + <right_val>0.5459060072898865</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 2 2 14 -1.</_> + <_>11 2 1 14 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0255786404013634</threshold> + <left_val>0.5219352841377258</left_val> + <right_val>0.1927185952663422</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 0 3 7 -1.</_> + <_>5 0 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0114474399015307</threshold> + <left_node>1</left_node> + <right_val>0.1916002035140991</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 8 12 -1.</_> + <_>5 5 4 6 2.</_> + <_>9 11 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.2427501436322927e-004</threshold> + <left_val>0.5231571197509766</left_val> + <right_val>0.3535340130329132</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 4 6 3 -1.</_> + <_>11 5 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.7127500921487808e-003</threshold> + <left_node>1</left_node> + <right_val>0.6464101076126099</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 3 4 3 -1.</_> + <_>12 4 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0113375699147582</threshold> + <left_val>0.7383037805557251</left_val> + <right_val>0.4964743852615356</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 10 12 -1.</_> + <_>5 5 5 6 2.</_> + <_>10 11 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.1453882157802582e-003</threshold> + <left_val>0.3611705899238586</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 6 12 3 -1.</_> + <_>9 6 6 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5570756345987320e-003</threshold> + <left_val>0.3421907126903534</left_val> + <right_val>0.5943511724472046</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 6 2 7 -1.</_> + <_>9 6 1 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2993308957666159e-003</threshold> + <left_val>0.4550104141235352</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 5 2 4 -1.</_> + <_>9 5 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8430930580943823e-003</threshold> + <left_val>0.4716862142086029</left_val> + <right_val>0.6656190752983093</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 3 3 -1.</_> + <_>9 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.9116540513932705e-004</threshold> + <left_node>1</left_node> + <right_val>0.4592716991901398</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 1 6 4 -1.</_> + <_>7 1 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0254964698106050</threshold> + <left_val>0.6563401222229004</left_val> + <right_val>0.1258835047483444</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 16 7 3 -1.</_> + <_>13 17 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0157483592629433</threshold> + <left_node>1</left_node> + <right_val>0.5239502191543579</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 4 3 3 -1.</_> + <_>12 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0180461201816797</threshold> + <left_val>0.8015851974487305</left_val> + <right_val>0.5007957816123962</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 16 7 3 -1.</_> + <_>0 17 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0103233903646469</threshold> + <left_node>1</left_node> + <right_val>0.2274820059537888</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 3 3 -1.</_> + <_>5 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6452240524813533e-003</threshold> + <left_val>0.4351946115493774</left_val> + <right_val>0.5867627859115601</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 9 8 10 -1.</_> + <_>12 9 4 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0158811490982771</threshold> + <left_val>0.4465051889419556</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 10 12 5 -1.</_> + <_>12 10 4 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0105865197256207</threshold> + <left_val>0.4544458091259003</left_val> + <right_val>0.5707110762596130</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 9 8 10 -1.</_> + <_>4 9 4 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0215316899120808</threshold> + <left_val>0.6527643799781799</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 10 12 5 -1.</_> + <_>4 10 4 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2480469457805157e-003</threshold> + <left_val>0.3444727957248688</left_val> + <right_val>0.5324636101722717</right_val></_></_></trees> + <stage_threshold>25.6093006134033200</stage_threshold> + <parent>9</parent> + <next>-1</next></_> + <_> + <!-- stage 11 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 3 6 2 -1.</_> + <_>5 3 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8219340126961470e-003</threshold> + <left_val>0.3108788132667542</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 17 9 -1.</_> + <_>0 3 17 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1313941627740860e-003</threshold> + <left_val>0.3133237063884735</left_val> + <right_val>0.6645867228507996</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 7 12 2 -1.</_> + <_>8 7 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7055979697033763e-003</threshold> + <left_val>0.2640131115913391</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 4 6 4 -1.</_> + <_>12 4 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.4483548814896494e-005</threshold> + <left_val>0.5647205114364624</left_val> + <right_val>0.3485372960567474</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 10 20 4 -1.</_> + <_>0 12 20 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8342390325851738e-004</threshold> + <left_node>1</left_node> + <right_val>0.3140654861927033</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 3 6 5 -1.</_> + <_>6 3 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.1868910882622004e-003</threshold> + <left_val>0.6489198803901672</left_val> + <right_val>0.3887729048728943</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 1 18 4 -1.</_> + <_>7 1 6 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1604432016611099</threshold> + <left_node>1</left_node> + <right_val>0.7216529846191406</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 9 2 3 -1.</_> + <_>13 9 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.7285560071468353e-003</threshold> + <left_val>0.1653137952089310</left_val> + <right_val>0.5139825940132141</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 15 7 4 -1.</_> + <_>6 17 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.2638481469766703e-006</threshold> + <left_val>0.3140619993209839</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 17 4 2 -1.</_> + <_>3 18 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.5551197146996856e-004</threshold> + <left_val>0.5993698835372925</left_val> + <right_val>0.3317398130893707</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 4 8 10 -1.</_> + <_>9 9 8 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0108223203569651</threshold> + <left_val>0.2652938067913055</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 17 3 2 -1.</_> + <_>10 17 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5834020711481571e-003</threshold> + <left_val>0.1849568933248520</left_val> + <right_val>0.5313957929611206</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 2 4 8 -1.</_> + <_>8 6 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.0205070506781340e-003</threshold> + <left_node>1</left_node> + <right_val>0.4040099978446960</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 4 14 12 -1.</_> + <_>3 4 7 6 2.</_> + <_>10 10 7 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0778646171092987</threshold> + <left_val>0.6158189773559570</left_val> + <right_val>0.1786486953496933</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 6 4 -1.</_> + <_>9 7 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0264943800866604</threshold> + <left_val>0.4511089920997620</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 9 4 -1.</_> + <_>6 9 9 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0369121097028255</threshold> + <left_val>0.4528219997882843</left_val> + <right_val>0.5972282886505127</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 10 3 3 -1.</_> + <_>2 11 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.7857790961861610e-003</threshold> + <left_node>1</left_node> + <right_val>0.2533892095088959</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 6 2 9 -1.</_> + <_>4 9 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.3849771656095982e-004</threshold> + <left_val>0.3410412073135376</left_val> + <right_val>0.5923643708229065</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 11 3 3 -1.</_> + <_>9 12 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0110031999647617</threshold> + <left_val>0.6958044171333313</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 1 15 2 -1.</_> + <_>3 2 15 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1737640015780926e-003</threshold> + <left_val>0.3851084113121033</left_val> + <right_val>0.5408189296722412</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 2 3 -1.</_> + <_>9 9 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6596669815480709e-003</threshold> + <left_val>0.2009308934211731</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 2 5 -1.</_> + <_>10 6 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4822750128805637e-003</threshold> + <left_val>0.6295393109321594</left_val> + <right_val>0.4395040869712830</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 3 -1.</_> + <_>9 8 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4606071896851063e-003</threshold> + <left_val>0.2405299991369247</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 10 12 10 -1.</_> + <_>4 15 12 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.5969649907201529e-003</threshold> + <left_val>0.5450174212455750</left_val> + <right_val>0.3782357871532440</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 10 4 2 -1.</_> + <_>0 11 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6222559865564108e-003</threshold> + <left_val>0.3033896982669830</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 15 9 2 -1.</_> + <_>5 16 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2059339787811041e-003</threshold> + <left_val>0.4633778929710388</left_val> + <right_val>0.6335952281951904</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 6 3 -1.</_> + <_>8 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3124938383698463e-003</threshold> + <left_node>1</left_node> + <right_val>0.6598826050758362</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 16 4 3 -1.</_> + <_>8 17 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4961250387132168e-003</threshold> + <left_val>0.6621696949005127</left_val> + <right_val>0.4755246937274933</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 9 4 2 -1.</_> + <_>8 10 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3860689941793680e-003</threshold> + <left_val>0.2801201045513153</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 3 14 2 -1.</_> + <_>3 4 14 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.1588460337370634e-004</threshold> + <left_val>0.3829489052295685</left_val> + <right_val>0.5623626708984375</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 12 1 2 -1.</_> + <_>11 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.0330002927221358e-005</threshold> + <left_val>0.4536342918872833</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 12 12 1 -1.</_> + <_>8 12 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0976549421902746e-004</threshold> + <left_val>0.5608139038085938</left_val> + <right_val>0.4265779852867127</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 1 2 -1.</_> + <_>0 3 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3642259873449802e-003</threshold> + <left_node>1</left_node> + <right_val>0.2637091875076294</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 4 4 6 -1.</_> + <_>9 4 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5483660390600562e-003</threshold> + <left_val>0.4170750975608826</left_val> + <right_val>0.5932987928390503</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 20 14 -1.</_> + <_>10 2 10 7 2.</_> + <_>0 9 10 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1917960941791534</threshold> + <left_val>0.5256764292716980</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 6 1 3 -1.</_> + <_>14 7 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4776909053325653e-003</threshold> + <left_val>0.6632621884346008</left_val> + <right_val>0.4892588853836060</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 20 12 -1.</_> + <_>0 4 10 6 2.</_> + <_>10 10 10 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1264917999505997</threshold> + <left_val>0.1499778926372528</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 1 2 -1.</_> + <_>8 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5253327193204314e-005</threshold> + <left_val>0.4233320057392120</left_val> + <right_val>0.5756040215492249</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 18 3 2 -1.</_> + <_>10 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1856421157717705e-003</threshold> + <left_val>0.5288826823234558</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 17 6 2 -1.</_> + <_>11 17 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7478230185806751e-004</threshold> + <left_val>0.4524017870426178</left_val> + <right_val>0.5604125261306763</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 6 2 3 -1.</_> + <_>5 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2906810045242310e-003</threshold> + <left_val>0.5578274130821228</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 3 3 -1.</_> + <_>5 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6744500026106834e-003</threshold> + <left_val>0.3323057889938355</left_val> + <right_val>0.5558788180351257</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 15 3 2 -1.</_> + <_>14 16 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2349759927019477e-003</threshold> + <left_node>1</left_node> + <right_val>0.3653947114944458</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 3 3 4 -1.</_> + <_>12 3 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.7158754467964172e-003</threshold> + <left_val>0.1924533993005753</left_val> + <right_val>0.5313649773597717</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 15 3 2 -1.</_> + <_>3 16 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6613621525466442e-003</threshold> + <left_node>1</left_node> + <right_val>0.2027730941772461</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 2 3 -1.</_> + <_>9 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5815992206335068e-003</threshold> + <left_val>0.7636060118675232</left_val> + <right_val>0.5140826106071472</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 13 3 7 -1.</_> + <_>10 13 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0143521204590797</threshold> + <left_val>0.5252975821495056</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 12 5 3 -1.</_> + <_>12 13 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.7948719263076782e-003</threshold> + <left_val>0.2632937133312225</left_val> + <right_val>0.5328689217567444</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 18 3 2 -1.</_> + <_>9 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.4155680332332850e-003</threshold> + <left_val>0.2416087985038757</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 12 4 -1.</_> + <_>4 7 6 2 2.</_> + <_>10 9 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2639090679585934e-003</threshold> + <left_val>0.3936544954776764</left_val> + <right_val>0.5478742122650147</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 19 14 1 -1.</_> + <_>6 19 7 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7177697569131851e-003</threshold> + <left_val>0.4788199067115784</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 14 3 2 -1.</_> + <_>16 15 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2232629600912333e-003</threshold> + <left_val>0.3631612062454224</left_val> + <right_val>0.5288316011428833</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 6 10 -1.</_> + <_>1 0 3 5 2.</_> + <_>4 5 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0421883687376976</threshold> + <left_val>0.6931139230728149</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 0 4 10 -1.</_> + <_>1 0 2 5 2.</_> + <_>3 5 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0198757499456406</threshold> + <left_val>0.4520100057125092</left_val> + <right_val>0.6855055093765259</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 3 5 6 -1.</_> + <_>15 5 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0311345104128122</threshold> + <left_node>1</left_node> + <right_val>0.5300424098968506</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 5 2 15 -1.</_> + <_>9 10 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.7032387703657150e-003</threshold> + <left_val>0.5606892108917236</left_val> + <right_val>0.4230622947216034</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 5 6 -1.</_> + <_>0 5 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.2733682096004486e-003</threshold> + <left_node>1</left_node> + <right_val>0.3247228860855103</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 0 3 2 -1.</_> + <_>7 0 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1231069006025791e-003</threshold> + <left_val>0.1985695958137512</left_val> + <right_val>0.5349872708320618</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 8 8 2 -1.</_> + <_>16 8 4 1 2.</_> + <_>12 9 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6453849063254893e-004</threshold> + <left_val>0.4207508862018585</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 12 1 -1.</_> + <_>9 8 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0303558893501759</threshold> + <left_val>0.5153458714485169</left_val> + <right_val>0.3118101060390472</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 13 3 3 -1.</_> + <_>3 14 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2992769740521908e-003</threshold> + <left_val>0.3274506926536560</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 13 3 2 -1.</_> + <_>5 14 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9509199773892760e-004</threshold> + <left_val>0.5953078269958496</left_val> + <right_val>0.4225521087646484</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 15 3 3 -1.</_> + <_>9 16 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.7784480527043343e-003</threshold> + <left_val>0.7211179733276367</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 15 7 3 -1.</_> + <_>7 16 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0169175993651152</threshold> + <left_val>0.4936591982841492</left_val> + <right_val>0.7030277252197266</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 14 11 6 -1.</_> + <_>3 16 11 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0519485697150230</threshold> + <left_val>0.1425534933805466</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 19 14 1 -1.</_> + <_>7 19 7 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4751220159232616e-003</threshold> + <left_val>0.6059331893920898</left_val> + <right_val>0.4393995106220245</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 17 6 2 -1.</_> + <_>11 17 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5210839592327829e-005</threshold> + <left_val>0.4488849937915802</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 11 6 2 -1.</_> + <_>14 11 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0235579684376717e-003</threshold> + <left_val>0.4256550073623657</left_val> + <right_val>0.5795438289642334</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 17 6 2 -1.</_> + <_>7 17 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0427719826111570e-004</threshold> + <left_val>0.4246039986610413</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 1 9 10 -1.</_> + <_>3 1 3 10 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7853781878948212e-003</threshold> + <left_val>0.4958009123802185</left_val> + <right_val>0.6759430766105652</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 1 3 3 -1.</_> + <_>11 1 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.4012699034065008e-003</threshold> + <left_val>0.5423480868339539</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 5 6 4 -1.</_> + <_>9 5 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8582378551363945e-004</threshold> + <left_val>0.3636542856693268</left_val> + <right_val>0.5464348793029785</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 1 3 3 -1.</_> + <_>8 1 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2973360028117895e-003</threshold> + <left_val>0.2548818886280060</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 4 11 -1.</_> + <_>2 4 2 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0143301896750927</threshold> + <left_val>0.6587656736373901</left_val> + <right_val>0.4532802104949951</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 6 4 -1.</_> + <_>9 5 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.8565965890884399e-004</threshold> + <left_val>0.3822771012783051</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 0 8 10 -1.</_> + <_>10 0 4 5 2.</_> + <_>6 5 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0466407611966133</threshold> + <left_val>0.3077321946620941</left_val> + <right_val>0.5244132876396179</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 6 5 14 -1.</_> + <_>6 13 5 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1190730035305023</threshold> + <left_val>0.1033862978219986</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 5 4 14 -1.</_> + <_>8 12 4 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0193332806229591</threshold> + <left_val>0.5554745197296143</left_val> + <right_val>0.3221316933631897</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 6 5 -1.</_> + <_>9 7 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0314278490841389</threshold> + <left_val>0.4682379066944122</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 3 3 9 -1.</_> + <_>9 6 3 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0082130504306406e-004</threshold> + <left_val>0.5373070240020752</left_val> + <right_val>0.3800666928291321</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 1 3 3 -1.</_> + <_>9 1 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.2584900297224522e-003</threshold> + <left_val>0.1799207031726837</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 2 4 -1.</_> + <_>10 6 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.2861045375466347e-003</threshold> + <left_val>0.5095068812370300</left_val> + <right_val>0.7544605135917664</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 8 6 9 -1.</_> + <_>10 8 3 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0529709290713072e-003</threshold> + <left_val>0.5628644824028015</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 4 3 8 -1.</_> + <_>17 4 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2524869311600924e-003</threshold> + <left_val>0.4801689088344574</left_val> + <right_val>0.5802102088928223</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 9 10 6 -1.</_> + <_>5 9 5 3 2.</_> + <_>10 12 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0318849012255669</threshold> + <left_val>0.1742745041847229</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 6 4 -1.</_> + <_>8 5 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8379340181127191e-003</threshold> + <left_val>0.3466596901416779</left_val> + <right_val>0.5107154846191406</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 4 2 -1.</_> + <_>9 9 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.8512680223211646e-004</threshold> + <left_node>1</left_node> + <right_val>0.5326086282730103</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 7 2 2 -1.</_> + <_>11 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5407879147678614e-003</threshold> + <left_val>0.6342775225639343</left_val> + <right_val>0.4992693066596985</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 4 8 -1.</_> + <_>8 12 2 4 2.</_> + <_>10 16 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.1559060811996460e-003</threshold> + <left_val>0.3433429002761841</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 1 4 9 -1.</_> + <_>0 4 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0449687503278255</threshold> + <left_val>0.1868136972188950</left_val> + <right_val>0.5215464830398560</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 10 3 3 -1.</_> + <_>9 11 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8984281495213509e-003</threshold> + <left_node>1</left_node> + <right_val>0.6229305267333984</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 11 4 2 -1.</_> + <_>8 12 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2763120252639055e-003</threshold> + <left_val>0.4935772120952606</left_val> + <right_val>0.7217944860458374</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 8 4 2 -1.</_> + <_>7 9 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0161520185647532e-004</threshold> + <left_node>1</left_node> + <right_val>0.5007976293563843</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 8 6 1 -1.</_> + <_>9 8 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6290300118271261e-004</threshold> + <left_val>0.6024149060249329</left_val> + <right_val>0.2329508066177368</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 0 4 9 -1.</_> + <_>16 0 2 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0541364625096321e-003</threshold> + <left_val>0.4510416984558106</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 0 3 6 -1.</_> + <_>16 3 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0353984907269478</threshold> + <left_val>0.5141996741294861</left_val> + <right_val>0.2860291898250580</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 4 9 -1.</_> + <_>2 0 2 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.6469351984560490e-003</threshold> + <left_val>0.4704925119876862</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 0 3 6 -1.</_> + <_>1 3 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4807190056890249e-003</threshold> + <left_val>0.4179851114749908</left_val> + <right_val>0.6726647019386292</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 6 9 -1.</_> + <_>11 7 2 9 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1088787838816643e-003</threshold> + <left_val>0.5809801816940308</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 6 3 6 -1.</_> + <_>11 6 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0714469719678164e-003</threshold> + <left_val>0.6074783802032471</left_val> + <right_val>0.4524059891700745</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 2 18 2 -1.</_> + <_>1 2 9 1 2.</_> + <_>10 3 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8939060866832733e-003</threshold> + <left_val>0.3383519947528839</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 6 8 -1.</_> + <_>7 8 2 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3467279495671391e-003</threshold> + <left_val>0.5696910023689270</left_val> + <right_val>0.3970845043659210</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 0 6 16 -1.</_> + <_>11 0 2 16 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0907791331410408</threshold> + <left_val>0.1502701938152313</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 1 6 18 -1.</_> + <_>17 1 3 9 2.</_> + <_>14 10 3 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0831717625260353</threshold> + <left_val>0.7573670744895935</left_val> + <right_val>0.4936437010765076</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 9 2 3 -1.</_> + <_>2 10 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4107000315561891e-003</threshold> + <left_val>0.3390932977199554</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 1 6 18 -1.</_> + <_>0 1 3 9 2.</_> + <_>3 10 3 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0556687600910664</threshold> + <left_val>0.5025097131729126</left_val> + <right_val>0.7422083020210266</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 8 4 12 -1.</_> + <_>11 8 2 12 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0577015392482281</threshold> + <left_val>0.5197371840476990</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 1 18 18 -1.</_> + <_>2 10 18 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.4250329136848450</threshold> + <left_val>0.0973469167947769</left_val> + <right_val>0.5185739994049072</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 3 3 1 -1.</_> + <_>7 3 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4380719191394746e-004</threshold> + <left_val>0.3649350106716156</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 12 2 2 -1.</_> + <_>4 13 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7924769781529903e-004</threshold> + <left_val>0.5619279146194458</left_val> + <right_val>0.3760297000408173</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 5 3 -1.</_> + <_>8 14 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.0382469780743122e-003</threshold> + <left_node>1</left_node> + <right_val>0.6328445076942444</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 14 4 3 -1.</_> + <_>8 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0151911703869700</threshold> + <left_val>0.4936082065105438</left_val> + <right_val>0.7426524758338928</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 5 3 -1.</_> + <_>3 13 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0123003898188472</threshold> + <left_val>0.1389349997043610</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 3 4 -1.</_> + <_>7 3 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5168030513450503e-003</threshold> + <left_val>0.5091962218284607</left_val> + <right_val>0.3482648134231567</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 10 2 2 -1.</_> + <_>12 10 1 1 2.</_> + <_>11 11 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.5754547510296106e-004</threshold> + <left_node>1</left_node> + <right_val>0.6036316752433777</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 12 1 -1.</_> + <_>9 8 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0189622007310390</threshold> + <left_val>0.2319173067808151</left_val> + <right_val>0.5116652846336365</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 4 4 8 -1.</_> + <_>10 4 2 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0222722608596087</threshold> + <left_val>0.6555022001266480</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 6 8 5 -1.</_> + <_>10 6 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0251452308148146</threshold> + <left_val>0.1326071023941040</left_val> + <right_val>0.4674034118652344</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 4 6 4 -1.</_> + <_>12 4 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0195339005440474</threshold> + <left_val>0.5182027220726013</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 7 2 2 -1.</_> + <_>13 7 1 1 2.</_> + <_>12 8 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1231349781155586e-003</threshold> + <left_val>0.6318243145942688</left_val> + <right_val>0.4825519025325775</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 5 10 8 -1.</_> + <_>3 9 10 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4861139934509993e-003</threshold> + <left_val>0.2918671071529388</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 1 2 12 -1.</_> + <_>7 7 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5002888762392104e-004</threshold> + <left_val>0.5621371269226074</left_val> + <right_val>0.4249213039875031</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 7 2 2 -1.</_> + <_>13 7 1 1 2.</_> + <_>12 8 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1231349781155586e-003</threshold> + <left_node>1</left_node> + <right_val>0.4813745021820068</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 13 1 6 -1.</_> + <_>11 16 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0104097397997975</threshold> + <left_val>0.5184006094932556</left_val> + <right_val>0.2051223069429398</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 1 6 15 -1.</_> + <_>7 1 2 15 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0878325626254082</threshold> + <left_val>0.1179921999573708</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 2 2 -1.</_> + <_>6 7 1 1 2.</_> + <_>7 8 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6584879485890269e-003</threshold> + <left_val>0.4987811148166657</left_val> + <right_val>0.6973755955696106</right_val></_></_> + <_> + <!-- tree 63 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>17 5 2 2 -1.</_> + <_>17 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3008750285953283e-003</threshold> + <left_node>1</left_node> + <right_val>0.5339831113815308</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 3 4 10 -1.</_> + <_>12 3 2 5 2.</_> + <_>10 8 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0330261699855328</threshold> + <left_val>0.5033289194107056</left_val> + <right_val>0.6851906776428223</right_val></_></_> + <_> + <!-- tree 64 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 5 2 2 -1.</_> + <_>1 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3585069682449102e-003</threshold> + <left_val>0.3002822101116180</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 10 2 2 -1.</_> + <_>7 10 1 1 2.</_> + <_>8 11 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.8067491995170712e-004</threshold> + <left_val>0.4593083858489990</left_val> + <right_val>0.6440045237541199</right_val></_></_> + <_> + <!-- tree 65 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 14 4 -1.</_> + <_>10 12 7 2 2.</_> + <_>3 14 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0180257596075535</threshold> + <left_node>1</left_node> + <right_val>0.5311291217803955</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 15 3 2 -1.</_> + <_>9 16 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2354910140857100e-003</threshold> + <left_val>0.4729106128215790</left_val> + <right_val>0.5721461176872253</right_val></_></_> + <_> + <!-- tree 66 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 13 3 3 -1.</_> + <_>1 14 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.2583027435466647e-004</threshold> + <left_val>0.3662332892417908</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 3 1 2 -1.</_> + <_>0 4 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0123997759073973e-004</threshold> + <left_val>0.5361989736557007</left_val> + <right_val>0.3008632957935333</right_val></_></_></trees> + <stage_threshold>32.6471290588378910</stage_threshold> + <parent>10</parent> + <next>-1</next></_> + <_> + <!-- stage 12 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 6 1 -1.</_> + <_>9 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4914839304983616e-003</threshold> + <left_val>0.3422389030456543</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 16 6 -1.</_> + <_>0 6 16 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0504885986447334</threshold> + <left_val>0.7703458070755005</left_val> + <right_val>0.4516390860080719</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 3 2 14 -1.</_> + <_>9 10 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.7838351717218757e-004</threshold> + <left_node>1</left_node> + <right_val>0.3256342113018036</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 0 4 3 -1.</_> + <_>12 0 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3572890495415777e-004</threshold> + <left_val>0.3406555950641632</left_val> + <right_val>0.5897027254104614</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 18 12 2 -1.</_> + <_>8 18 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5575071126222610e-003</threshold> + <left_val>0.4306578934192658</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 10 12 4 -1.</_> + <_>8 10 4 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1241987645626068e-003</threshold> + <left_val>0.7149587273597717</left_val> + <right_val>0.4345684945583344</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 9 2 2 -1.</_> + <_>9 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4612158671952784e-004</threshold> + <left_val>0.3295974135398865</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 1 2 8 -1.</_> + <_>15 1 1 4 2.</_> + <_>14 5 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8972938889637589e-004</threshold> + <left_val>0.5845620036125183</left_val> + <right_val>0.3526687920093536</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 4 9 1 -1.</_> + <_>6 4 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.1604831646254752e-006</threshold> + <left_val>0.4081954956054688</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 3 4 2 -1.</_> + <_>3 4 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.8497708737850189e-004</threshold> + <left_val>0.4203113019466400</left_val> + <right_val>0.6634126901626587</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 15 2 4 -1.</_> + <_>11 17 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9489860278554261e-004</threshold> + <left_val>0.3942466974258423</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 13 2 6 -1.</_> + <_>14 15 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0170838497579098</threshold> + <left_val>0.2294072061777115</left_val> + <right_val>0.5238960981369019</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 6 1 6 -1.</_> + <_>6 9 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.3513697609305382e-004</threshold> + <left_val>0.3026031851768494</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 10 8 8 -1.</_> + <_>6 14 8 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.5499608647078276e-004</threshold> + <left_val>0.6032196283340454</left_val> + <right_val>0.3412458896636963</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 4 3 -1.</_> + <_>8 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0216713249683380e-003</threshold> + <left_node>1</left_node> + <right_val>0.7306240797042847</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 11 4 8 -1.</_> + <_>10 15 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0389305092394352</threshold> + <left_val>0.3599325120449066</left_val> + <right_val>0.5234380960464478</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 11 6 1 -1.</_> + <_>7 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0348767621908337e-005</threshold> + <left_node>1</left_node> + <right_val>0.3493758141994476</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 6 10 -1.</_> + <_>8 4 3 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5350573062896729e-003</threshold> + <left_val>0.2746109068393707</left_val> + <right_val>0.5626586079597473</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 2 6 3 -1.</_> + <_>14 3 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0108544500544667</threshold> + <left_val>0.5282226204872131</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 3 2 -1.</_> + <_>9 13 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5329501153901219e-004</threshold> + <left_val>0.4522049129009247</left_val> + <right_val>0.6054301857948303</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 1 4 6 -1.</_> + <_>8 3 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8117150466423482e-004</threshold> + <left_val>0.3306862115859985</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 5 13 8 -1.</_> + <_>3 9 13 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6641560038551688e-004</threshold> + <left_val>0.1455000042915344</left_val> + <right_val>0.5384927988052368</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 5 5 3 -1.</_> + <_>12 6 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.4854792803525925e-003</threshold> + <left_node>1</left_node> + <right_val>0.4814155995845795</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 14 15 6 -1.</_> + <_>5 16 15 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0189343094825745</threshold> + <left_val>0.3563741147518158</left_val> + <right_val>0.5405145287513733</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 5 5 3 -1.</_> + <_>3 6 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.9814549274742603e-003</threshold> + <left_node>1</left_node> + <right_val>0.6957743167877197</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 2 6 -1.</_> + <_>9 14 1 3 2.</_> + <_>10 17 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.4286780282855034e-003</threshold> + <left_val>0.5050892829895020</left_val> + <right_val>0.2316994965076447</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 12 3 2 -1.</_> + <_>9 13 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4203791185282171e-004</threshold> + <left_node>1</left_node> + <right_val>0.6018581986427307</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 13 3 2 -1.</_> + <_>9 14 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3822550429031253e-004</threshold> + <left_val>0.4755082130432129</left_val> + <right_val>0.5585237741470337</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 6 3 -1.</_> + <_>0 3 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.4261639490723610e-003</threshold> + <left_val>0.2282465994358063</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 1 9 11 -1.</_> + <_>3 1 3 11 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.9637769162654877e-003</threshold> + <left_val>0.4040588140487671</left_val> + <right_val>0.5650169849395752</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 4 6 -1.</_> + <_>10 13 2 3 2.</_> + <_>8 16 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0136540504172444</threshold> + <left_val>0.5267739295959473</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 6 3 -1.</_> + <_>7 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.9892877042293549e-003</threshold> + <left_val>0.6794049739837647</left_val> + <right_val>0.4797033965587616</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 14 4 -1.</_> + <_>3 12 7 2 2.</_> + <_>10 14 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0365586318075657</threshold> + <left_node>1</left_node> + <right_val>0.0884257331490517</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 1 4 -1.</_> + <_>7 16 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.8999379941960797e-005</threshold> + <left_val>0.4020788073539734</left_val> + <right_val>0.5457332134246826</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 4 6 -1.</_> + <_>10 13 2 3 2.</_> + <_>8 16 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0136540504172444</threshold> + <left_val>0.5267612934112549</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 14 1 3 -1.</_> + <_>10 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8802779959514737e-003</threshold> + <left_val>0.4806052148342133</left_val> + <right_val>0.6394364833831787</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 4 6 -1.</_> + <_>8 13 2 3 2.</_> + <_>10 16 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0136540504172444</threshold> + <left_val>0.1724810004234314</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 1 3 -1.</_> + <_>9 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2778700329363346e-003</threshold> + <left_val>0.4479824006557465</left_val> + <right_val>0.6310008764266968</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 15 2 3 -1.</_> + <_>10 16 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.8843395244330168e-004</threshold> + <left_node>1</left_node> + <right_val>0.5948169231414795</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 16 1 2 -1.</_> + <_>11 17 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4511500012304168e-005</threshold> + <left_val>0.4854174852371216</left_val> + <right_val>0.5309361219406128</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 0 2 2 -1.</_> + <_>9 1 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2775429533794522e-004</threshold> + <left_val>0.3183631896972656</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 1 5 8 -1.</_> + <_>0 5 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0147537402808666</threshold> + <left_val>0.3084976077079773</left_val> + <right_val>0.5352026224136353</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 14 2 3 -1.</_> + <_>10 15 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.4148250706493855e-003</threshold> + <left_val>0.6115326881408691</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 13 2 3 -1.</_> + <_>10 14 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.5806681998074055e-003</threshold> + <left_val>0.4951646029949188</left_val> + <right_val>0.7061331272125244</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 16 6 -1.</_> + <_>0 6 16 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.7734688743948936e-003</threshold> + <left_node>1</left_node> + <right_val>0.3754220902919769</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 1 2 2 -1.</_> + <_>5 1 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4033669079653919e-005</threshold> + <left_val>0.4115517139434815</left_val> + <right_val>0.5889444947242737</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 3 -1.</_> + <_>9 8 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.2278084009885788e-003</threshold> + <left_val>0.0956105664372444</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 8 2 12 -1.</_> + <_>10 12 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3380909375846386e-003</threshold> + <left_val>0.5300508737564087</left_val> + <right_val>0.3961898088455200</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 2 -1.</_> + <_>10 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7049109339714050e-003</threshold> + <left_val>0.6481869220733643</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 0 6 8 -1.</_> + <_>7 0 2 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.7341338619589806e-003</threshold> + <left_val>0.5110440254211426</left_val> + <right_val>0.3121519088745117</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 3 6 -1.</_> + <_>10 7 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0108866095542908</threshold> + <left_val>0.4801428914070129</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 10 8 -1.</_> + <_>8 16 10 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0110386600717902</threshold> + <left_val>0.5429710149765015</left_val> + <right_val>0.4162363111972809</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 3 6 -1.</_> + <_>9 7 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0100541999563575</threshold> + <left_val>0.7329335212707520</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 12 2 -1.</_> + <_>10 7 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.7072880230844021e-003</threshold> + <left_val>0.5356872081756592</left_val> + <right_val>0.3455547094345093</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 8 3 -1.</_> + <_>8 6 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.8278098003938794e-004</threshold> + <left_val>0.3655022084712982</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 15 3 3 -1.</_> + <_>16 16 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5739220436662436e-003</threshold> + <left_val>0.3776760101318359</left_val> + <right_val>0.5391774773597717</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 6 12 3 -1.</_> + <_>10 6 6 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0167761296033859e-003</threshold> + <left_val>0.4039304852485657</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 8 3 5 -1.</_> + <_>8 8 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.7727289814502001e-003</threshold> + <left_val>0.6950443983078003</left_val> + <right_val>0.4981116950511932</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 10 20 2 -1.</_> + <_>10 10 10 1 2.</_> + <_>0 11 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0163182895630598</threshold> + <left_node>1</left_node> + <right_val>0.5296732783317566</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 16 9 4 -1.</_> + <_>14 16 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0116630000993609</threshold> + <left_val>0.5842639803886414</left_val> + <right_val>0.4789502918720245</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 5 3 4 -1.</_> + <_>1 5 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.5881489273160696e-003</threshold> + <left_node>1</left_node> + <right_val>0.6092178821563721</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 15 4 2 -1.</_> + <_>8 15 2 1 2.</_> + <_>10 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.7328999023884535e-003</threshold> + <left_val>0.6721742749214172</left_val> + <right_val>0.4066894054412842</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 8 19 3 -1.</_> + <_>1 9 19 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4355930034071207e-003</threshold> + <left_val>0.3585087954998016</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 16 3 3 -1.</_> + <_>15 17 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8340899841859937e-003</threshold> + <left_val>0.5371158123016357</left_val> + <right_val>0.4033507108688355</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 20 10 -1.</_> + <_>0 4 10 5 2.</_> + <_>10 9 10 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1228028982877731</threshold> + <left_node>1</left_node> + <right_val>0.1547572016716003</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 14 7 6 -1.</_> + <_>2 16 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0502287000417709</threshold> + <left_val>0.5433843731880188</left_val> + <right_val>0.0842926725745201</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 6 6 -1.</_> + <_>10 6 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0214370004832745</threshold> + <left_node>1</left_node> + <right_val>0.4860053956508637</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 4 4 6 -1.</_> + <_>16 6 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0310096200555563</threshold> + <left_val>0.1833010017871857</left_val> + <right_val>0.5207554101943970</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 13 6 3 -1.</_> + <_>7 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0129737202078104</threshold> + <left_val>0.7048240900039673</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 4 3 -1.</_> + <_>7 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5818020328879356e-003</threshold> + <left_val>0.4170587062835693</left_val> + <right_val>0.5865163803100586</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 13 6 2 -1.</_> + <_>13 14 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.7806248813867569e-003</threshold> + <left_node>1</left_node> + <right_val>0.5307918190956116</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 12 2 3 -1.</_> + <_>14 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1735740117728710e-003</threshold> + <left_val>0.5522453188896179</left_val> + <right_val>0.3507165014743805</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 13 6 2 -1.</_> + <_>1 14 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4651629608124495e-003</threshold> + <left_node>1</left_node> + <right_val>0.3042651116847992</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 12 2 3 -1.</_> + <_>4 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3532148916274309e-003</threshold> + <left_val>0.5339323282241821</left_val> + <right_val>0.2806236147880554</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>17 4 3 5 -1.</_> + <_>18 4 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.1809681355953217e-003</threshold> + <left_val>0.6410133242607117</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 14 8 -1.</_> + <_>12 5 7 4 2.</_> + <_>5 9 7 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5688649192452431e-004</threshold> + <left_val>0.5620871186256409</left_val> + <right_val>0.4390318989753723</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 8 6 5 -1.</_> + <_>8 8 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0262280106544495</threshold> + <left_node>1</left_node> + <right_val>0.6445556879043579</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 4 6 -1.</_> + <_>0 6 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0179581101983786</threshold> + <left_val>0.2002713978290558</left_val> + <right_val>0.4624665081501007</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 1 3 6 -1.</_> + <_>10 1 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.6468721963465214e-003</threshold> + <left_node>1</left_node> + <right_val>0.5263200998306274</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 4 6 3 -1.</_> + <_>10 5 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7482809964567423e-003</threshold> + <left_val>0.5873981118202210</left_val> + <right_val>0.4836600124835968</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 1 3 6 -1.</_> + <_>9 1 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0138518502935767</threshold> + <left_node>1</left_node> + <right_val>0.1566130965948105</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 4 6 3 -1.</_> + <_>4 5 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6369190309196711e-003</threshold> + <left_val>0.4270178973674774</left_val> + <right_val>0.5806660056114197</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 4 3 3 -1.</_> + <_>12 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1513599678874016e-003</threshold> + <left_val>0.6215866208076477</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 11 4 2 -1.</_> + <_>12 12 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4788460248382762e-005</threshold> + <left_val>0.5576642751693726</left_val> + <right_val>0.4122002124786377</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 20 6 -1.</_> + <_>0 2 10 3 2.</_> + <_>10 5 10 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0736769884824753</threshold> + <left_val>0.1536709964275360</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 3 3 -1.</_> + <_>5 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.0912780202925205e-003</threshold> + <left_val>0.6344268918037415</left_val> + <right_val>0.4507412016391754</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 10 16 4 -1.</_> + <_>10 10 8 2 2.</_> + <_>2 12 8 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.9240966588258743e-003</threshold> + <left_val>0.5457975268363953</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 10 16 6 -1.</_> + <_>11 10 8 3 2.</_> + <_>3 13 8 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.5778040811419487e-003</threshold> + <left_val>0.5401657223701477</left_val> + <right_val>0.3890799880027771</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 10 16 6 -1.</_> + <_>1 10 8 3 2.</_> + <_>9 13 8 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.5403169244527817e-003</threshold> + <left_node>1</left_node> + <right_val>0.3555611073970795</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 2 4 -1.</_> + <_>5 7 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1886510037584230e-004</threshold> + <left_val>0.5836750268936157</left_val> + <right_val>0.4274316132068634</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 16 9 4 -1.</_> + <_>14 16 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0184083692729473</threshold> + <left_val>0.5860440135002136</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 16 14 4 -1.</_> + <_>10 16 7 2 2.</_> + <_>3 18 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3490579333156347e-003</threshold> + <left_val>0.4498957991600037</left_val> + <right_val>0.5498198866844177</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 16 9 4 -1.</_> + <_>3 16 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.6157399453222752e-003</threshold> + <left_node>1</left_node> + <right_val>0.4100992977619171</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 14 6 6 -1.</_> + <_>1 14 3 3 2.</_> + <_>4 17 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3190969843417406e-003</threshold> + <left_val>0.6701378822326660</left_val> + <right_val>0.4353001117706299</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 0 2 1 -1.</_> + <_>9 0 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.4642979092895985e-004</threshold> + <left_node>1</left_node> + <right_val>0.5391176939010620</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 8 10 -1.</_> + <_>10 7 4 5 2.</_> + <_>6 12 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7858550250530243e-003</threshold> + <left_val>0.5504050254821777</left_val> + <right_val>0.3990935087203980</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 15 1 2 -1.</_> + <_>2 16 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6395459533669055e-004</threshold> + <left_node>1</left_node> + <right_val>0.3592933118343353</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 14 7 6 -1.</_> + <_>0 16 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3508940357714891e-003</threshold> + <left_val>0.4034172892570496</left_val> + <right_val>0.5806077122688294</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 8 6 2 -1.</_> + <_>7 9 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.5449963333085179e-005</threshold> + <left_node>1</left_node> + <right_val>0.5412384867668152</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 2 2 15 -1.</_> + <_>9 7 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0270184893161058</threshold> + <left_val>0.4944922924041748</left_val> + <right_val>0.5589436292648315</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 6 2 2 -1.</_> + <_>5 7 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.4561208495870233e-004</threshold> + <left_node>1</left_node> + <right_val>0.5809218287467957</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 6 8 3 -1.</_> + <_>6 7 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1687109945341945e-003</threshold> + <left_val>0.4746957123279572</left_val> + <right_val>0.2845895886421204</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 13 5 6 -1.</_> + <_>12 15 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0228975005447865</threshold> + <left_node>1</left_node> + <right_val>0.2414411008358002</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 20 18 -1.</_> + <_>0 9 20 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.7087926268577576</threshold> + <left_val>0.5195764899253845</left_val> + <right_val>0.1030092015862465</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 1 6 6 -1.</_> + <_>7 1 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0374838300049305</threshold> + <left_node>1</left_node> + <right_val>0.1814638972282410</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 1 4 9 -1.</_> + <_>7 1 2 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2827500468119979e-003</threshold> + <left_val>0.4246071875095367</left_val> + <right_val>0.5707973241806030</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 19 18 1 -1.</_> + <_>7 19 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.1718312315642834e-003</threshold> + <left_val>0.6143323183059692</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 16 5 2 -1.</_> + <_>14 17 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7545939665287733e-003</threshold> + <left_val>0.5205671191215515</left_val> + <right_val>0.4220441877841950</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 5 15 10 -1.</_> + <_>0 10 15 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6072919610887766e-003</threshold> + <left_val>0.3182592093944550</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 15 4 2 -1.</_> + <_>7 15 2 1 2.</_> + <_>9 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5258748792111874e-004</threshold> + <left_val>0.5710468292236328</left_val> + <right_val>0.4226093888282776</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 11 2 2 -1.</_> + <_>14 12 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0514748804271221e-003</threshold> + <left_node>1</left_node> + <right_val>0.5162829756736755</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 8 3 3 -1.</_> + <_>9 9 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4323761723935604e-003</threshold> + <left_val>0.2666288912296295</left_val> + <right_val>0.5214679837226868</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 11 2 2 -1.</_> + <_>4 12 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4652940080850385e-005</threshold> + <left_node>1</left_node> + <right_val>0.3981761038303375</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 3 3 -1.</_> + <_>8 9 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8556920113041997e-003</threshold> + <left_val>0.3322763144969940</left_val> + <right_val>0.5705834031105042</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 10 2 3 -1.</_> + <_>9 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7609540633857250e-003</threshold> + <left_node>1</left_node> + <right_val>0.6636558175086975</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 4 3 -1.</_> + <_>8 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5676260227337480e-003</threshold> + <left_val>0.5505567789077759</left_val> + <right_val>0.4420661926269531</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 9 4 10 -1.</_> + <_>1 9 2 5 2.</_> + <_>3 14 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.4239919409155846e-003</threshold> + <left_node>1</left_node> + <right_val>0.5959938168525696</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 12 6 8 -1.</_> + <_>2 12 2 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.4692399464547634e-003</threshold> + <left_val>0.5369594097137451</left_val> + <right_val>0.3744339942932129</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 1 4 2 -1.</_> + <_>11 1 2 1 2.</_> + <_>9 2 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8038539504632354e-004</threshold> + <left_val>0.4103595018386841</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 13 7 6 -1.</_> + <_>12 15 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0450864508748055</threshold> + <left_val>0.5177506804466248</left_val> + <right_val>0.1878100037574768</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 0 2 3 -1.</_> + <_>7 1 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.1405387930572033e-003</threshold> + <left_val>0.2352892011404038</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 6 3 -1.</_> + <_>9 14 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0212361291050911</threshold> + <left_val>0.1708751022815704</left_val> + <right_val>0.5424973964691162</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 6 6 4 -1.</_> + <_>11 6 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3763340432196856e-003</threshold> + <left_val>0.5836530923843384</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 10 8 3 -1.</_> + <_>8 10 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0541225895285606</threshold> + <left_val>0.5117433071136475</left_val> + <right_val>0.1865931004285812</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 10 4 3 -1.</_> + <_>8 10 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.3492980077862740e-004</threshold> + <left_val>0.5108693242073059</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 8 3 5 -1.</_> + <_>7 8 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.8454048121348023e-004</threshold> + <left_val>0.4775491058826447</left_val> + <right_val>0.2439853996038437</right_val></_></_></trees> + <stage_threshold>30.6721305847167970</stage_threshold> + <parent>11</parent> + <next>-1</next></_> + <_> + <!-- stage 13 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 8 1 -1.</_> + <_>4 4 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0031939968466759e-003</threshold> + <left_val>0.3349649906158447</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 2 2 6 -1.</_> + <_>8 2 1 3 2.</_> + <_>9 5 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.9161207647994161e-004</threshold> + <left_val>0.4518367946147919</left_val> + <right_val>0.7289354205131531</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 7 20 6 -1.</_> + <_>0 9 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0112127903848886</threshold> + <left_val>0.2950800955295563</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 10 3 6 -1.</_> + <_>12 13 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.6108198845759034e-004</threshold> + <left_val>0.5669054985046387</left_val> + <right_val>0.2830851078033447</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 15 1 4 -1.</_> + <_>8 17 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1984579759882763e-004</threshold> + <left_val>0.4090577960014343</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 16 2 4 -1.</_> + <_>5 18 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9725349557120353e-004</threshold> + <left_val>0.6951494216918945</left_val> + <right_val>0.4637868106365204</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 2 8 12 -1.</_> + <_>6 6 8 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.5180420167744160e-003</threshold> + <left_node>1</left_node> + <right_val>0.3167675137519836</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 12 2 -1.</_> + <_>8 7 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2148249661549926e-003</threshold> + <left_val>0.3316706120967865</left_val> + <right_val>0.5396397709846497</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 0 6 1 -1.</_> + <_>9 0 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2497441172599792e-003</threshold> + <left_val>0.2600573897361755</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 11 3 3 -1.</_> + <_>8 12 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.4915721565485001e-003</threshold> + <left_val>0.7484294772148132</left_val> + <right_val>0.5073192119598389</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 11 3 6 -1.</_> + <_>12 14 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5378600265830755e-004</threshold> + <left_node>1</left_node> + <right_val>0.3952010869979858</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 2 6 10 -1.</_> + <_>14 2 3 5 2.</_> + <_>11 7 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.9741100519895554e-004</threshold> + <left_val>0.5880274772644043</left_val> + <right_val>0.3552120029926300</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 10 12 -1.</_> + <_>5 7 5 6 2.</_> + <_>10 13 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0430792495608330</threshold> + <left_val>0.2434878051280975</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 4 2 10 -1.</_> + <_>4 9 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.1999092102050781e-004</threshold> + <left_val>0.3195562958717346</left_val> + <right_val>0.5585454702377319</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 3 -1.</_> + <_>9 7 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5451628975570202e-003</threshold> + <left_node>1</left_node> + <right_val>0.4845289885997772</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 9 6 2 -1.</_> + <_>11 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.9610403627157211e-003</threshold> + <left_val>0.3801181018352509</left_val> + <right_val>0.5358511805534363</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 7 2 2 -1.</_> + <_>5 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1919340835884213e-004</threshold> + <left_node>1</left_node> + <right_val>0.4356329143047333</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 4 6 -1.</_> + <_>0 4 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0192238893359900</threshold> + <left_val>0.2613066136837006</left_val> + <right_val>0.6155496239662170</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 7 3 4 -1.</_> + <_>11 7 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3076990144327283e-003</threshold> + <left_val>0.5942062139511108</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 3 5 -1.</_> + <_>10 7 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0198250394314528</threshold> + <left_val>0.4945428073406220</left_val> + <right_val>0.7384855151176453</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 1 1 3 -1.</_> + <_>9 2 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2013280540704727e-003</threshold> + <left_val>0.2214481979608536</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 6 16 6 -1.</_> + <_>0 6 8 3 2.</_> + <_>8 9 8 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8596705570816994e-003</threshold> + <left_val>0.3600977063179016</left_val> + <right_val>0.5298550128936768</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 15 3 3 -1.</_> + <_>10 16 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4142199652269483e-003</threshold> + <left_node>1</left_node> + <right_val>0.5776566267013550</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 4 3 -1.</_> + <_>9 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0112327598035336</threshold> + <left_val>0.6934456825256348</left_val> + <right_val>0.4827207028865814</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 2 6 10 -1.</_> + <_>3 2 3 5 2.</_> + <_>6 7 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9746301006525755e-003</threshold> + <left_node>1</left_node> + <right_val>0.3216677010059357</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 0 14 2 -1.</_> + <_>3 1 14 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3283828310668468e-004</threshold> + <left_val>0.3962500095367432</left_val> + <right_val>0.5680363774299622</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 3 3 -1.</_> + <_>9 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0101052597165108</threshold> + <left_node>1</left_node> + <right_val>0.7567418217658997</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 15 3 3 -1.</_> + <_>10 16 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0116536999121308</threshold> + <left_val>0.6523556709289551</left_val> + <right_val>0.5027053952217102</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 13 2 6 -1.</_> + <_>9 16 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0609981194138527e-003</threshold> + <left_val>0.2538770139217377</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 6 3 -1.</_> + <_>7 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2343141026794910e-003</threshold> + <left_val>0.4387277066707611</left_val> + <right_val>0.6177632212638855</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 11 3 6 -1.</_> + <_>12 14 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0298022795468569</threshold> + <left_node>1</left_node> + <right_val>0.5201140046119690</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 5 2 -1.</_> + <_>8 13 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1611840454861522e-003</threshold> + <left_val>0.4647909998893738</left_val> + <right_val>0.6184254884719849</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 11 3 6 -1.</_> + <_>5 14 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.4824447296559811e-004</threshold> + <left_node>1</left_node> + <right_val>0.3040994107723236</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 3 2 -1.</_> + <_>8 13 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1284630424343050e-004</threshold> + <left_val>0.4518808126449585</left_val> + <right_val>0.6245782971382141</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 13 7 6 -1.</_> + <_>11 15 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0312035400420427</threshold> + <left_val>0.2788935899734497</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 6 3 -1.</_> + <_>7 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7652881108224392e-003</threshold> + <left_val>0.4698500037193298</left_val> + <right_val>0.6502454280853272</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 13 14 4 -1.</_> + <_>3 13 7 2 2.</_> + <_>10 15 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0256447792053223</threshold> + <left_node>1</left_node> + <right_val>0.1805171072483063</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 14 4 6 -1.</_> + <_>8 14 2 3 2.</_> + <_>10 17 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.5331530533730984e-003</threshold> + <left_val>0.3208068907260895</left_val> + <right_val>0.5522022843360901</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 15 4 3 -1.</_> + <_>8 16 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2047149725258350e-003</threshold> + <left_node>1</left_node> + <right_val>0.6436933875083923</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 16 6 2 -1.</_> + <_>9 16 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4282479716930538e-004</threshold> + <left_val>0.5676705241203308</left_val> + <right_val>0.4509103894233704</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 6 2 -1.</_> + <_>7 8 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.1979342717677355e-004</threshold> + <left_val>0.3122146129608154</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 9 13 3 -1.</_> + <_>3 10 13 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.0101029016077518e-004</threshold> + <left_val>0.2965193986892700</left_val> + <right_val>0.5230494737625122</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 3 4 -1.</_> + <_>9 10 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.1816839994862676e-004</threshold> + <left_node>1</left_node> + <right_val>0.5464711785316467</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 10 4 3 -1.</_> + <_>8 11 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2239529751241207e-003</threshold> + <left_val>0.4618502855300903</left_val> + <right_val>0.5679548978805542</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 3 4 -1.</_> + <_>8 7 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.8743730662390590e-004</threshold> + <left_val>0.5430880188941956</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 3 5 -1.</_> + <_>9 7 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8252469599246979e-003</threshold> + <left_val>0.5433623194694519</left_val> + <right_val>0.3385221064090729</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 3 3 4 -1.</_> + <_>13 3 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.4570789001882076e-003</threshold> + <left_node>1</left_node> + <right_val>0.5265594720840454</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 2 3 -1.</_> + <_>9 7 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3775748237967491e-003</threshold> + <left_val>0.4857215881347656</left_val> + <right_val>0.6815124154090881</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 3 3 4 -1.</_> + <_>6 3 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.7602309603244066e-003</threshold> + <left_node>1</left_node> + <right_val>0.2832160890102387</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 7 12 1 -1.</_> + <_>7 7 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7752222316339612e-004</threshold> + <left_val>0.3966830968856812</left_val> + <right_val>0.5512480735778809</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 5 3 3 -1.</_> + <_>12 6 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.5084479972720146e-003</threshold> + <left_node>1</left_node> + <right_val>0.6784620285034180</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 2 6 2 -1.</_> + <_>11 3 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.5949047459289432e-004</threshold> + <left_val>0.3906503021717072</left_val> + <right_val>0.5457202792167664</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 2 14 2 -1.</_> + <_>3 2 7 1 2.</_> + <_>10 3 7 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6352660022675991e-003</threshold> + <left_node>1</left_node> + <right_val>0.3640204071998596</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 1 7 14 -1.</_> + <_>6 8 7 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2750849418807775e-004</threshold> + <left_val>0.5829724073410034</left_val> + <right_val>0.4194979965686798</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 0 12 5 -1.</_> + <_>8 0 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0220676101744175</threshold> + <left_val>0.4606702923774719</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 9 18 1 -1.</_> + <_>7 9 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0192037895321846</threshold> + <left_val>0.3261483013629913</left_val> + <right_val>0.5236080884933472</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 10 5 -1.</_> + <_>5 0 5 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0129981096833944</threshold> + <left_val>0.7022112011909485</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 5 8 15 -1.</_> + <_>2 10 8 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1332690268754959e-003</threshold> + <left_val>0.2870470881462097</left_val> + <right_val>0.5076476931571960</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 5 3 3 -1.</_> + <_>12 6 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.2937557920813560e-003</threshold> + <left_node>1</left_node> + <right_val>0.4709520936012268</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 4 2 3 -1.</_> + <_>13 5 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1857069805264473e-003</threshold> + <left_val>0.4708291888237000</left_val> + <right_val>0.6169841885566711</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 15 4 3 -1.</_> + <_>2 16 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5750709250569344e-003</threshold> + <left_val>0.3114252984523773</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 10 3 -1.</_> + <_>10 6 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0451521389186382</threshold> + <left_val>0.1851435005664825</left_val> + <right_val>0.5504814982414246</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 6 2 2 -1.</_> + <_>12 6 1 1 2.</_> + <_>11 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7783559635281563e-003</threshold> + <left_node>1</left_node> + <right_val>0.4937348067760468</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 4 4 3 -1.</_> + <_>12 5 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5752480141818523e-003</threshold> + <left_val>0.6152948141098023</left_val> + <right_val>0.4735499918460846</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 6 2 2 -1.</_> + <_>7 6 1 1 2.</_> + <_>8 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1614130344241858e-003</threshold> + <left_node>1</left_node> + <right_val>0.6510571837425232</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 4 4 3 -1.</_> + <_>4 5 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3350189439952374e-003</threshold> + <left_val>0.4088341891765595</left_val> + <right_val>0.5684152245521545</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 4 3 3 -1.</_> + <_>12 4 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8499289657920599e-003</threshold> + <left_node>1</left_node> + <right_val>0.3025828897953033</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 3 2 1 -1.</_> + <_>9 3 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4529630318284035e-003</threshold> + <left_val>0.5232502818107605</left_val> + <right_val>0.2017620950937271</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 5 5 3 -1.</_> + <_>4 6 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6731390282511711e-003</threshold> + <left_node>1</left_node> + <right_val>0.6428425908088684</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 6 4 3 -1.</_> + <_>4 7 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1937100682407618e-003</threshold> + <left_val>0.4328865110874176</left_val> + <right_val>0.6420509815216065</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 4 3 3 -1.</_> + <_>12 4 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.4666871912777424e-003</threshold> + <left_node>1</left_node> + <right_val>0.5254065990447998</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 4 3 -1.</_> + <_>8 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.7186251506209373e-003</threshold> + <left_val>0.2490984052419663</left_val> + <right_val>0.5287619233131409</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 4 3 3 -1.</_> + <_>7 4 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.9941878579556942e-004</threshold> + <left_node>1</left_node> + <right_val>0.3329795897006989</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 14 1 3 -1.</_> + <_>4 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8276498243212700e-004</threshold> + <left_val>0.3598344922065735</left_val> + <right_val>0.5498340725898743</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 3 -1.</_> + <_>9 7 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3231188319623470e-003</threshold> + <left_val>0.4818705022335053</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>17 0 3 2 -1.</_> + <_>17 1 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.0838290005922318e-003</threshold> + <left_val>0.5266330242156982</left_val> + <right_val>0.3105789124965668</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 10 2 9 -1.</_> + <_>8 13 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0515898833982646e-004</threshold> + <left_node>1</left_node> + <right_val>0.3995291888713837</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 8 18 2 -1.</_> + <_>0 9 18 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2640280183404684e-003</threshold> + <left_val>0.3228437900543213</left_val> + <right_val>0.5819215178489685</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 15 2 3 -1.</_> + <_>9 16 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0101526603102684</threshold> + <left_val>0.8026071190834045</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 4 3 -1.</_> + <_>8 8 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6863690000027418e-003</threshold> + <left_val>0.3875617086887360</left_val> + <right_val>0.5466570854187012</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 14 6 6 -1.</_> + <_>1 14 3 3 2.</_> + <_>4 17 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.0515613555908203e-003</threshold> + <left_node>1</left_node> + <right_val>0.4372057914733887</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 18 6 2 -1.</_> + <_>0 19 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.3204211182892323e-003</threshold> + <left_val>0.1126551032066345</left_val> + <right_val>0.6395416259765625</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 9 4 3 -1.</_> + <_>12 9 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6117300149053335e-003</threshold> + <left_val>0.5423989295959473</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 8 3 8 -1.</_> + <_>10 8 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0143390195444226</threshold> + <left_val>0.4979273080825806</left_val> + <right_val>0.6042236089706421</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 9 4 3 -1.</_> + <_>6 9 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8452780097723007e-003</threshold> + <left_node>1</left_node> + <right_val>0.3491092026233673</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 18 6 1 -1.</_> + <_>6 18 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4783289771003183e-005</threshold> + <left_val>0.4195067882537842</left_val> + <right_val>0.5775966048240662</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 3 2 -1.</_> + <_>10 7 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1814555451273918e-003</threshold> + <left_val>0.4885987043380737</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 8 12 -1.</_> + <_>10 7 4 6 2.</_> + <_>6 13 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.6321990452706814e-003</threshold> + <left_val>0.5444468259811401</left_val> + <right_val>0.4420995116233826</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 3 2 -1.</_> + <_>9 7 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2483461070805788e-003</threshold> + <left_val>0.6699792146682739</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 3 6 -1.</_> + <_>9 7 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0123745603486896</threshold> + <left_val>0.4478605985641480</left_val> + <right_val>0.6564893722534180</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 16 14 4 -1.</_> + <_>10 16 7 2 2.</_> + <_>3 18 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.6516688093543053e-003</threshold> + <left_node>1</left_node> + <right_val>0.5511878728866577</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 14 18 4 -1.</_> + <_>10 14 9 2 2.</_> + <_>1 16 9 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5750613361597061e-003</threshold> + <left_val>0.4017445147037506</left_val> + <right_val>0.5405536293983460</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 3 3 -1.</_> + <_>8 8 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5078441984951496e-003</threshold> + <left_node>1</left_node> + <right_val>0.2294393032789230</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 20 12 -1.</_> + <_>0 4 10 6 2.</_> + <_>10 10 10 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0286752097308636</threshold> + <left_val>0.5177900195121765</left_val> + <right_val>0.3567756116390228</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 10 12 -1.</_> + <_>10 5 5 6 2.</_> + <_>5 11 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.0673860609531403e-003</threshold> + <left_val>0.5564699769020081</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 2 4 7 -1.</_> + <_>10 2 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2367829913273454e-003</threshold> + <left_val>0.3627698123455048</left_val> + <right_val>0.5572413802146912</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 11 4 3 -1.</_> + <_>8 12 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4818679131567478e-003</threshold> + <left_node>1</left_node> + <right_val>0.6784911155700684</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 3 3 -1.</_> + <_>8 13 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7109839506447315e-003</threshold> + <left_val>0.4121252894401550</left_val> + <right_val>0.6072235703468323</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 13 5 6 -1.</_> + <_>13 15 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.9405790418386459e-003</threshold> + <left_node>1</left_node> + <right_val>0.5459766983985901</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 0 6 6 -1.</_> + <_>9 0 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0333020985126495</threshold> + <left_val>0.5276706814765930</left_val> + <right_val>0.2374915927648544</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 13 5 6 -1.</_> + <_>2 15 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0361046306788921</threshold> + <left_node>1</left_node> + <right_val>0.0724927932024002</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 2 12 -1.</_> + <_>0 4 1 6 2.</_> + <_>1 10 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0196746494621038</threshold> + <left_val>0.4626345932483673</left_val> + <right_val>0.8208963274955750</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 19 3 1 -1.</_> + <_>10 19 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.4766150638461113e-003</threshold> + <left_val>0.5208731889724731</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>18 0 2 6 -1.</_> + <_>18 2 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3987369602546096e-003</threshold> + <left_val>0.5484414100646973</left_val> + <right_val>0.4230034947395325</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 1 6 -1.</_> + <_>0 5 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.0974249131977558e-003</threshold> + <left_node>1</left_node> + <right_val>0.2780553102493286</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 3 6 -1.</_> + <_>0 2 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6973790954798460e-003</threshold> + <left_val>0.5403831005096436</left_val> + <right_val>0.3790988922119141</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>17 2 3 7 -1.</_> + <_>18 2 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6591699831187725e-003</threshold> + <left_node>1</left_node> + <right_val>0.4798336029052734</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 3 4 7 -1.</_> + <_>10 3 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.9460969856008887e-004</threshold> + <left_val>0.3766950070858002</left_val> + <right_val>0.5429229140281677</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 3 7 -1.</_> + <_>1 2 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1750570740550756e-003</threshold> + <left_node>1</left_node> + <right_val>0.6207162737846375</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 2 4 8 -1.</_> + <_>8 2 2 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4614439569413662e-003</threshold> + <left_val>0.3357945084571838</left_val> + <right_val>0.5142632126808167</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 0 1 4 -1.</_> + <_>13 2 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.3006567759439349e-004</threshold> + <left_node>1</left_node> + <right_val>0.5344640016555786</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 1 12 5 -1.</_> + <_>9 1 4 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1486930996179581</threshold> + <left_val>0.5159608125686646</left_val> + <right_val>0.2561823129653931</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 0 1 4 -1.</_> + <_>6 2 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.8816498494707048e-005</threshold> + <left_node>1</left_node> + <right_val>0.5123091936111450</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 1 12 5 -1.</_> + <_>7 1 4 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6275369562208652e-003</threshold> + <left_val>0.6017646193504334</left_val> + <right_val>0.3109371960163117</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 12 3 8 -1.</_> + <_>10 12 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0128818098455668</threshold> + <left_val>0.2712287008762360</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 6 1 -1.</_> + <_>9 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.4982917653396726e-004</threshold> + <left_val>0.5442442297935486</left_val> + <right_val>0.4028888046741486</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 14 6 3 -1.</_> + <_>7 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0123159997165203</threshold> + <left_node>1</left_node> + <right_val>0.4736065864562988</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 16 7 3 -1.</_> + <_>5 17 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0286601334810257e-003</threshold> + <left_val>0.7451434731483460</left_val> + <right_val>0.3487991988658905</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 12 20 6 -1.</_> + <_>0 14 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0868761166930199</threshold> + <left_val>0.2290333062410355</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 18 14 2 -1.</_> + <_>4 19 14 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5107560102478601e-005</threshold> + <left_val>0.5517889857292175</left_val> + <right_val>0.4393149018287659</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 3 8 -1.</_> + <_>9 12 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0174576602876186</threshold> + <left_val>0.0901679024100304</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 3 3 -1.</_> + <_>7 14 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5219470262527466e-003</threshold> + <left_val>0.6233540177345276</left_val> + <right_val>0.4789459109306335</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 12 10 -1.</_> + <_>11 5 6 5 2.</_> + <_>5 10 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0656520025804639e-003</threshold> + <left_val>0.5489696264266968</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 1 5 10 -1.</_> + <_>8 6 5 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2540300637483597e-003</threshold> + <left_val>0.5579808950424194</left_val> + <right_val>0.4375877976417542</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 4 9 12 -1.</_> + <_>5 10 9 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.0349102392792702e-003</threshold> + <left_val>0.3579156100749970</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 6 6 -1.</_> + <_>7 15 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5230999561026692e-003</threshold> + <left_val>0.5613660216331482</left_val> + <right_val>0.3939043879508972</right_val></_></_> + <_> + <!-- tree 63 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 4 5 16 -1.</_> + <_>8 12 5 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8441150207072496e-003</threshold> + <left_node>1</left_node> + <right_val>0.3901554942131043</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 4 6 -1.</_> + <_>8 15 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2824429217725992e-003</threshold> + <left_val>0.4528619050979614</left_val> + <right_val>0.5441343188285828</right_val></_></_> + <_> + <!-- tree 64 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 13 2 2 -1.</_> + <_>7 13 1 1 2.</_> + <_>8 14 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2161718991119415e-005</threshold> + <left_node>1</left_node> + <right_val>0.5803111791610718</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 12 2 2 -1.</_> + <_>7 12 1 1 2.</_> + <_>8 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0118400900391862e-005</threshold> + <left_val>0.3336850106716156</left_val> + <right_val>0.5504856109619141</right_val></_></_> + <_> + <!-- tree 65 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 0 2 14 -1.</_> + <_>18 0 1 14 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6150099262595177e-003</threshold> + <left_val>0.6124789118766785</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 11 7 2 -1.</_> + <_>12 12 7 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0173892099410295</threshold> + <left_val>0.0872716307640076</left_val> + <right_val>0.5204588174819946</right_val></_></_> + <_> + <!-- tree 66 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 18 1 2 -1.</_> + <_>1 19 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4361080654198304e-005</threshold> + <left_val>0.3935329020023346</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 18 1 2 -1.</_> + <_>2 19 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0354899859521538e-004</threshold> + <left_val>0.5918853878974915</left_val> + <right_val>0.4119614064693451</right_val></_></_> + <_> + <!-- tree 67 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 1 -1.</_> + <_>9 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5939630102366209e-003</threshold> + <left_val>0.4839623868465424</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 2 3 -1.</_> + <_>9 6 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.5440789759159088e-003</threshold> + <left_val>0.4787364900112152</left_val> + <right_val>0.6360663175582886</right_val></_></_> + <_> + <!-- tree 68 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 1 2 2 -1.</_> + <_>4 1 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5083180187502876e-005</threshold> + <left_val>0.4231117069721222</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 0 3 2 -1.</_> + <_>3 1 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.9282202427275479e-005</threshold> + <left_val>0.4274589121341705</left_val> + <right_val>0.6094048023223877</right_val></_></_> + <_> + <!-- tree 69 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 10 3 4 -1.</_> + <_>12 12 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.5371708003804088e-004</threshold> + <left_node>1</left_node> + <right_val>0.4271987974643707</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 7 8 2 -1.</_> + <_>7 8 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9186759600415826e-003</threshold> + <left_val>0.4497107863426209</left_val> + <right_val>0.5549122095108032</right_val></_></_> + <_> + <!-- tree 70 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 8 3 4 -1.</_> + <_>8 10 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.0764222396537662e-004</threshold> + <left_node>1</left_node> + <right_val>0.5477195978164673</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 12 6 3 -1.</_> + <_>7 13 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7236480489373207e-003</threshold> + <left_val>0.2882922887802124</left_val> + <right_val>0.5615127086639404</right_val></_></_></trees> + <stage_threshold>34.6770782470703120</stage_threshold> + <parent>12</parent> + <next>-1</next></_> + <_> + <!-- stage 14 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 10 3 -1.</_> + <_>5 2 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0130921695381403</threshold> + <left_val>0.3338870108127594</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 1 20 6 -1.</_> + <_>0 3 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1446479735895991e-004</threshold> + <left_val>0.3099352121353149</left_val> + <right_val>0.6677492260932922</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 6 6 3 -1.</_> + <_>9 6 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0218357294797897</threshold> + <left_val>0.4369049072265625</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 7 14 4 -1.</_> + <_>3 9 14 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0483239404857159</threshold> + <left_val>0.4301724135875702</left_val> + <right_val>0.6153885126113892</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 3 6 -1.</_> + <_>5 9 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6091950237751007e-003</threshold> + <left_val>0.3387326002120972</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 3 12 -1.</_> + <_>8 12 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3469760306179523e-003</threshold> + <left_val>0.6248713731765747</left_val> + <right_val>0.3594130873680115</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 17 6 2 -1.</_> + <_>12 17 3 1 2.</_> + <_>9 18 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7729059618432075e-004</threshold> + <left_val>0.3868424892425537</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 17 4 3 -1.</_> + <_>10 18 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6743620876222849e-004</threshold> + <left_val>0.4409345090389252</left_val> + <right_val>0.5476474165916443</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 2 4 2 -1.</_> + <_>4 3 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2352119665592909e-003</threshold> + <left_val>0.3260171115398407</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 3 6 14 -1.</_> + <_>9 3 2 14 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1705530341714621e-003</threshold> + <left_val>0.4111348986625671</left_val> + <right_val>0.6088163852691650</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 13 1 6 -1.</_> + <_>15 16 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9695429475395940e-005</threshold> + <left_node>1</left_node> + <right_val>0.4269422888755798</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 14 2 6 -1.</_> + <_>13 16 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7050738572143018e-004</threshold> + <left_val>0.4306466877460480</left_val> + <right_val>0.5810514092445374</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 11 5 6 -1.</_> + <_>4 14 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.9626210208516568e-005</threshold> + <left_node>1</left_node> + <right_val>0.3669143021106720</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 17 4 2 -1.</_> + <_>6 17 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.3152441028505564e-004</threshold> + <left_val>0.4610663950443268</left_val> + <right_val>0.6290590167045593</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 20 2 -1.</_> + <_>0 6 10 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0523058287799358</threshold> + <left_node>1</left_node> + <right_val>0.5328689813613892</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 5 10 12 -1.</_> + <_>11 5 5 6 2.</_> + <_>6 11 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0268804691731930</threshold> + <left_val>0.5213261246681213</left_val> + <right_val>0.3231219947338104</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 0 2 12 -1.</_> + <_>4 0 1 6 2.</_> + <_>5 6 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4203000066336244e-004</threshold> + <left_node>1</left_node> + <right_val>0.3568570017814636</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 1 6 2 -1.</_> + <_>6 1 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6424639616161585e-003</threshold> + <left_val>0.3440661132335663</left_val> + <right_val>0.5625604987144470</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 7 2 1 -1.</_> + <_>13 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6830288697965443e-004</threshold> + <left_node>1</left_node> + <right_val>0.4561173021793366</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 15 6 -1.</_> + <_>5 7 15 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2649629972875118e-003</threshold> + <left_val>0.5321351885795593</left_val> + <right_val>0.3674154877662659</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 10 18 2 -1.</_> + <_>1 10 9 1 2.</_> + <_>10 11 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0156272090971470</threshold> + <left_node>1</left_node> + <right_val>0.2029353976249695</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 6 15 7 -1.</_> + <_>6 6 5 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1621132045984268</threshold> + <left_val>0.5563033223152161</left_val> + <right_val>0.2618849873542786</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 4 3 -1.</_> + <_>8 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.7391691002994776e-003</threshold> + <left_val>0.6062194705009460</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 3 3 -1.</_> + <_>9 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0878419745713472e-003</threshold> + <left_val>0.5950763821601868</left_val> + <right_val>0.4545117020606995</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 4 3 -1.</_> + <_>8 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3334210272878408e-003</threshold> + <left_node>1</left_node> + <right_val>0.6435524225234985</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 3 2 -1.</_> + <_>8 14 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5116386394947767e-005</threshold> + <left_val>0.3520734012126923</left_val> + <right_val>0.5179778933525085</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 14 5 3 -1.</_> + <_>15 15 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4625718407332897e-003</threshold> + <left_val>0.5326688289642334</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 14 20 1 -1.</_> + <_>0 14 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0220326893031597</threshold> + <left_val>0.3491981029510498</left_val> + <right_val>0.5429236888885498</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 14 6 3 -1.</_> + <_>0 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.3081610500812531e-003</threshold> + <left_val>0.2084023058414459</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 3 4 2 -1.</_> + <_>5 4 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.3259368976578116e-004</threshold> + <left_val>0.3965272009372711</left_val> + <right_val>0.5425453782081604</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 20 1 -1.</_> + <_>0 6 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0322092287242413</threshold> + <left_node>1</left_node> + <right_val>0.5306411981582642</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 10 14 -1.</_> + <_>11 3 5 7 2.</_> + <_>6 10 5 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.0424838708713651e-004</threshold> + <left_val>0.5450385808944702</left_val> + <right_val>0.4256696999073029</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 4 2 -1.</_> + <_>8 13 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2727500181645155e-003</threshold> + <left_node>1</left_node> + <right_val>0.5968611240386963</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 8 6 -1.</_> + <_>6 3 4 3 2.</_> + <_>10 6 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.9820008464157581e-003</threshold> + <left_val>0.4758140146732330</left_val> + <right_val>0.3150944113731384</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 7 2 1 -1.</_> + <_>13 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.8856618124991655e-004</threshold> + <left_node>1</left_node> + <right_val>0.4847748875617981</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 10 14 -1.</_> + <_>11 3 5 7 2.</_> + <_>6 10 5 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.8227191008627415e-004</threshold> + <left_val>0.5426316261291504</left_val> + <right_val>0.4338341057300568</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 2 1 -1.</_> + <_>6 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.4473457061685622e-005</threshold> + <left_node>1</left_node> + <right_val>0.4287509918212891</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 3 10 14 -1.</_> + <_>4 3 5 7 2.</_> + <_>9 10 5 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.9148979703895748e-004</threshold> + <left_val>0.6345185041427612</left_val> + <right_val>0.4101851880550385</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 2 -1.</_> + <_>9 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6939629353582859e-003</threshold> + <left_node>1</left_node> + <right_val>0.4849104881286621</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 3 20 1 -1.</_> + <_>0 3 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0112078497186303</threshold> + <left_val>0.4146336913108826</left_val> + <right_val>0.5471264123916626</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 1 10 3 -1.</_> + <_>2 2 10 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0103374095633626</threshold> + <left_val>0.2877183854579926</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 2 2 -1.</_> + <_>10 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6883640568703413e-003</threshold> + <left_val>0.5101901888847351</left_val> + <right_val>0.7216951251029968</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 17 3 2 -1.</_> + <_>10 17 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.8984280545264482e-003</threshold> + <left_node>1</left_node> + <right_val>0.5276182293891907</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 3 6 -1.</_> + <_>10 7 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.9986729174852371e-003</threshold> + <left_val>0.6618459820747376</left_val> + <right_val>0.4841631054878235</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 17 3 2 -1.</_> + <_>9 17 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5043681748211384e-003</threshold> + <left_node>1</left_node> + <right_val>0.1874157935380936</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 3 6 -1.</_> + <_>9 7 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0177995301783085</threshold> + <left_val>0.4616934955120087</left_val> + <right_val>0.7088965773582459</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 3 4 6 -1.</_> + <_>16 5 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0184625703841448</threshold> + <left_val>0.3001979887485504</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 6 2 12 -1.</_> + <_>16 6 1 6 2.</_> + <_>15 12 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4931300029275008e-005</threshold> + <left_val>0.4561808109283447</left_val> + <right_val>0.5610787868499756</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 4 18 10 -1.</_> + <_>1 4 9 5 2.</_> + <_>10 9 9 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0860212296247482</threshold> + <left_val>0.2341700941324234</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 4 2 4 -1.</_> + <_>9 6 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.0818758356617764e-005</threshold> + <left_val>0.5672286152839661</left_val> + <right_val>0.4199964106082916</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 5 3 2 -1.</_> + <_>12 6 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2670679716393352e-003</threshold> + <left_node>1</left_node> + <right_val>0.6207482218742371</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 12 10 4 -1.</_> + <_>5 14 10 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3699879636988044e-003</threshold> + <left_val>0.5394958853721619</left_val> + <right_val>0.3823862969875336</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 3 2 -1.</_> + <_>5 6 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.3162781037390232e-003</threshold> + <left_node>1</left_node> + <right_val>0.7061681151390076</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 6 12 6 -1.</_> + <_>8 6 4 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4532039640471339e-003</threshold> + <left_val>0.3065513074398041</left_val> + <right_val>0.4827373027801514</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 4 6 6 -1.</_> + <_>14 6 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0714920610189438</threshold> + <left_node>1</left_node> + <right_val>0.5193122029304504</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 0 4 6 -1.</_> + <_>18 0 2 3 2.</_> + <_>16 3 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9857978913933039e-003</threshold> + <left_val>0.4642435014247894</left_val> + <right_val>0.5807694792747498</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 6 6 -1.</_> + <_>0 6 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.2516499310731888e-003</threshold> + <left_node>1</left_node> + <right_val>0.2949813902378082</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 4 6 -1.</_> + <_>0 0 2 3 2.</_> + <_>2 3 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7005500160157681e-003</threshold> + <left_val>0.4585886895656586</left_val> + <right_val>0.6022353768348694</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 0 8 5 -1.</_> + <_>12 0 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0111303897574544</threshold> + <left_val>0.4357841014862061</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 0 4 17 -1.</_> + <_>16 0 2 17 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0150928497314453</threshold> + <left_val>0.4561539888381958</left_val> + <right_val>0.6119061708450317</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 18 20 -1.</_> + <_>7 0 6 20 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0279433000832796</threshold> + <left_val>0.6537144184112549</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 0 2 5 -1.</_> + <_>7 0 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4036991312168539e-005</threshold> + <left_val>0.3474723100662231</left_val> + <right_val>0.5336967706680298</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 20 1 -1.</_> + <_>0 6 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0122327702119946</threshold> + <left_val>0.3731676042079926</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 6 4 -1.</_> + <_>10 7 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.8591412855312228e-004</threshold> + <left_val>0.5717229247093201</left_val> + <right_val>0.4793379008769989</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 1 16 4 -1.</_> + <_>1 1 8 2 2.</_> + <_>9 3 8 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.8992990739643574e-003</threshold> + <left_val>0.4056436121463776</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 2 4 2 -1.</_> + <_>7 2 2 1 2.</_> + <_>9 3 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.9113907152786851e-004</threshold> + <left_val>0.6174048185348511</left_val> + <right_val>0.4471754133701325</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 4 9 3 -1.</_> + <_>7 5 9 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.2117747515439987e-003</threshold> + <left_node>1</left_node> + <right_val>0.6179698109626770</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 4 5 12 -1.</_> + <_>10 10 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0455644801259041</threshold> + <left_val>0.2285494953393936</left_val> + <right_val>0.5249565839767456</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 2 3 -1.</_> + <_>3 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.3631910122931004e-003</threshold> + <left_val>0.1784950047731400</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 3 5 -1.</_> + <_>9 8 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0122749703004956</threshold> + <left_val>0.7261952757835388</left_val> + <right_val>0.4550398886203766</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 9 2 3 -1.</_> + <_>13 9 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.4185991175472736e-003</threshold> + <left_val>0.5252990722656250</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 11 2 2 -1.</_> + <_>15 12 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1846961984410882e-004</threshold> + <left_val>0.5445222258567810</left_val> + <right_val>0.3272218108177185</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 6 2 3 -1.</_> + <_>5 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1358140297234058e-003</threshold> + <left_node>1</left_node> + <right_val>0.7013831734657288</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 11 6 2 -1.</_> + <_>2 12 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.9578010910190642e-004</threshold> + <left_val>0.4965943992137909</left_val> + <right_val>0.3295598030090332</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 11 4 3 -1.</_> + <_>15 12 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6887691132724285e-003</threshold> + <left_val>0.5362641811370850</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 0 4 17 -1.</_> + <_>16 0 2 17 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0182554405182600</threshold> + <left_val>0.6496108770370483</left_val> + <right_val>0.4757137000560761</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 11 4 3 -1.</_> + <_>1 12 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.2736468389630318e-003</threshold> + <left_val>0.2343741059303284</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 11 1 3 -1.</_> + <_>9 12 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4320168886333704e-003</threshold> + <left_val>0.4620118141174316</left_val> + <right_val>0.6898419260978699</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 9 6 7 -1.</_> + <_>10 9 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0496176294982433</threshold> + <left_val>0.2100719958543778</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 15 4 2 -1.</_> + <_>8 16 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1701210169121623e-003</threshold> + <left_val>0.4621528983116150</left_val> + <right_val>0.5797135829925537</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 9 6 7 -1.</_> + <_>7 9 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0452372916042805</threshold> + <left_val>0.2118262052536011</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 2 3 -1.</_> + <_>9 15 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7563421539962292e-003</threshold> + <left_val>0.4884614944458008</left_val> + <right_val>0.6872498989105225</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 20 2 -1.</_> + <_>10 2 10 1 2.</_> + <_>0 3 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0148359695449471</threshold> + <left_node>1</left_node> + <right_val>0.5275105834007263</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 8 2 -1.</_> + <_>6 8 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.7436608262360096e-004</threshold> + <left_val>0.4172320961952210</left_val> + <right_val>0.5491139888763428</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 20 2 -1.</_> + <_>0 2 10 1 2.</_> + <_>10 3 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0148359695449471</threshold> + <left_node>1</left_node> + <right_val>0.2124876976013184</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 1 2 10 -1.</_> + <_>3 1 1 5 2.</_> + <_>4 6 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.0892542609944940e-004</threshold> + <left_val>0.5495215058326721</left_val> + <right_val>0.4207795858383179</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 4 1 10 -1.</_> + <_>13 9 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.7517668250948191e-004</threshold> + <left_val>0.3321942090988159</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 8 4 3 -1.</_> + <_>9 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.7618978209793568e-003</threshold> + <left_val>0.2212958037853241</left_val> + <right_val>0.5232653021812439</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 11 16 4 -1.</_> + <_>2 11 8 2 2.</_> + <_>10 13 8 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0401358604431152</threshold> + <left_val>0.1101796030998230</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 1 3 5 -1.</_> + <_>6 1 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3651469275355339e-003</threshold> + <left_val>0.3810100853443146</left_val> + <right_val>0.5617291927337647</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 10 2 3 -1.</_> + <_>9 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4713007779791951e-004</threshold> + <left_node>1</left_node> + <right_val>0.5795056819915772</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 11 2 2 -1.</_> + <_>9 12 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2727389372885227e-003</threshold> + <left_val>0.6392269134521484</left_val> + <right_val>0.4711438119411469</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 10 20 2 -1.</_> + <_>0 11 20 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6202510818839073e-003</threshold> + <left_node>1</left_node> + <right_val>0.3409883975982666</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 7 6 4 -1.</_> + <_>1 7 3 2 2.</_> + <_>4 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7307618660852313e-004</threshold> + <left_val>0.3659302890300751</left_val> + <right_val>0.5388171076774597</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 0 8 8 -1.</_> + <_>16 0 4 4 2.</_> + <_>12 4 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0330949090421200</threshold> + <left_node>1</left_node> + <right_val>0.7170385718345642</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 1 6 4 -1.</_> + <_>16 1 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0115441195666790</threshold> + <left_val>0.6386818289756775</left_val> + <right_val>0.4681304097175598</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 3 2 14 -1.</_> + <_>6 10 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.4234469793736935e-003</threshold> + <left_val>0.3263700902462006</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 1 7 12 -1.</_> + <_>6 7 7 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2252950370311737e-003</threshold> + <left_val>0.5767819285392761</left_val> + <right_val>0.4346418082714081</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 0 15 5 -1.</_> + <_>10 0 5 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0181331094354391</threshold> + <left_val>0.4697827994823456</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 0 4 10 -1.</_> + <_>15 0 2 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.0903049781918526e-003</threshold> + <left_val>0.4437389075756073</left_val> + <right_val>0.6061668992042542</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 18 3 -1.</_> + <_>7 0 6 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0132729401811957</threshold> + <left_val>0.6558511257171631</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 17 2 -1.</_> + <_>0 1 17 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4632199599873275e-004</threshold> + <left_val>0.3376353979110718</left_val> + <right_val>0.5091655254364014</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 0 3 3 -1.</_> + <_>11 0 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.5790191031992435e-003</threshold> + <left_val>0.2947883903980255</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 0 3 12 -1.</_> + <_>11 0 1 12 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.6997101162560284e-004</threshold> + <left_val>0.5556982159614563</left_val> + <right_val>0.4665456116199493</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 3 4 16 -1.</_> + <_>1 3 2 8 2.</_> + <_>3 11 2 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0481794402003288</threshold> + <left_val>0.7338355779647827</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 0 3 3 -1.</_> + <_>8 0 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.2581362696364522e-004</threshold> + <left_val>0.3543871939182282</left_val> + <right_val>0.5285149812698364</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 13 2 6 -1.</_> + <_>9 16 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0147807300090790</threshold> + <left_val>0.1944441944360733</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 0 6 13 -1.</_> + <_>11 0 2 13 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1002745032310486</threshold> + <left_val>0.0990492925047874</left_val> + <right_val>0.5139853954315186</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 3 2 -1.</_> + <_>8 7 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.3848101096227765e-004</threshold> + <left_val>0.5827109813690186</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 2 1 12 -1.</_> + <_>8 6 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8861360624432564e-003</threshold> + <left_val>0.3441427946090698</left_val> + <right_val>0.5148838758468628</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 10 12 6 -1.</_> + <_>10 10 6 3 2.</_> + <_>4 13 6 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0436827614903450</threshold> + <left_node>1</left_node> + <right_val>0.5207998156547546</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 5 2 3 -1.</_> + <_>13 6 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6115700602531433e-003</threshold> + <left_val>0.4835503101348877</left_val> + <right_val>0.6322219967842102</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 10 12 6 -1.</_> + <_>4 10 6 3 2.</_> + <_>10 13 6 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0436827614903450</threshold> + <left_node>1</left_node> + <right_val>0.1364538073539734</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 2 3 -1.</_> + <_>5 6 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7179530113935471e-003</threshold> + <left_val>0.4537320137023926</left_val> + <right_val>0.6066750884056091</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 6 7 -1.</_> + <_>10 6 2 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0339649096131325</threshold> + <left_node>1</left_node> + <right_val>0.4968374967575073</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 2 4 -1.</_> + <_>9 6 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0993590112775564e-003</threshold> + <left_val>0.5831680893898010</left_val> + <right_val>0.4688239991664887</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 6 6 7 -1.</_> + <_>8 6 2 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0543010793626308</threshold> + <left_node>1</left_node> + <right_val>0.7568289041519165</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 2 4 -1.</_> + <_>10 6 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0993590112775564e-003</threshold> + <left_val>0.4330148100852966</left_val> + <right_val>0.5768468976020813</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 9 2 3 -1.</_> + <_>12 9 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4954120160837192e-005</threshold> + <left_node>1</left_node> + <right_val>0.4443281888961792</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 6 20 1 -1.</_> + <_>0 6 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0314158685505390</threshold> + <left_val>0.5274472832679749</left_val> + <right_val>0.3037855923175812</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 10 2 -1.</_> + <_>10 7 5 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0108318496495485</threshold> + <left_node>1</left_node> + <right_val>0.3581720888614655</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 16 4 3 -1.</_> + <_>1 17 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.6545711383223534e-004</threshold> + <left_val>0.5937584042549133</left_val> + <right_val>0.4294629991054535</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 4 3 3 -1.</_> + <_>12 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2743160370737314e-003</threshold> + <left_node>1</left_node> + <right_val>0.5954576730728149</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 3 5 3 -1.</_> + <_>10 4 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.9340821094810963e-003</threshold> + <left_val>0.4792222976684570</left_val> + <right_val>0.5856133103370667</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 9 14 8 -1.</_> + <_>3 9 7 4 2.</_> + <_>10 13 7 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1451907753944397e-003</threshold> + <left_node>1</left_node> + <right_val>0.3573477864265442</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 8 8 10 -1.</_> + <_>6 8 4 5 2.</_> + <_>10 13 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.2763288840651512e-003</threshold> + <left_val>0.4026022851467133</left_val> + <right_val>0.5764743089675903</right_val></_></_> + <_> + <!-- tree 63 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 4 3 3 -1.</_> + <_>12 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.3787851035594940e-003</threshold> + <left_node>1</left_node> + <right_val>0.4981333017349243</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 3 5 3 -1.</_> + <_>10 4 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5621910570189357e-003</threshold> + <left_val>0.4736588001251221</left_val> + <right_val>0.5583608150482178</right_val></_></_> + <_> + <!-- tree 64 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 4 3 3 -1.</_> + <_>5 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2318739686161280e-003</threshold> + <left_node>1</left_node> + <right_val>0.6167436838150024</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 3 5 3 -1.</_> + <_>5 4 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.6804019734263420e-003</threshold> + <left_val>0.4131424129009247</left_val> + <right_val>0.6280695199966431</right_val></_></_> + <_> + <!-- tree 65 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 16 2 3 -1.</_> + <_>13 17 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3396480139344931e-003</threshold> + <left_val>0.3446358144283295</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 5 20 6 -1.</_> + <_>0 7 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.2093348056077957</threshold> + <left_val>0.1038658022880554</left_val> + <right_val>0.5204489231109619</right_val></_></_> + <_> + <!-- tree 66 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 14 3 3 -1.</_> + <_>3 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.3805822283029556e-003</threshold> + <left_node>1</left_node> + <right_val>0.2167402058839798</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 15 5 3 -1.</_> + <_>7 16 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.0137799009680748e-003</threshold> + <left_val>0.6738399267196655</left_val> + <right_val>0.4896650910377502</right_val></_></_> + <_> + <!-- tree 67 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 9 2 3 -1.</_> + <_>12 9 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.1756077706813812e-003</threshold> + <left_node>1</left_node> + <right_val>0.5177915096282959</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 13 2 6 -1.</_> + <_>15 13 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.3951779156923294e-004</threshold> + <left_val>0.4819645881652832</left_val> + <right_val>0.5464438199996948</right_val></_></_> + <_> + <!-- tree 68 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 9 2 3 -1.</_> + <_>7 9 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0127760469913483e-003</threshold> + <left_node>1</left_node> + <right_val>0.3423596024513245</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 13 2 6 -1.</_> + <_>4 13 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.9784599104896188e-004</threshold> + <left_val>0.4488461017608643</left_val> + <right_val>0.5912671089172363</right_val></_></_> + <_> + <!-- tree 69 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 4 2 4 -1.</_> + <_>11 4 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3596490316558629e-004</threshold> + <left_node>1</left_node> + <right_val>0.5568863153457642</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 4 2 5 -1.</_> + <_>13 4 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0135716600343585</threshold> + <left_val>0.5161067843437195</left_val> + <right_val>0.1713000982999802</right_val></_></_> + <_> + <!-- tree 70 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 4 2 4 -1.</_> + <_>8 4 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0259079721872695e-005</threshold> + <left_node>1</left_node> + <right_val>0.4916203916072846</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 2 5 -1.</_> + <_>6 4 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2625840976834297e-003</threshold> + <left_val>0.6404662728309631</left_val> + <right_val>0.2859084904193878</right_val></_></_> + <_> + <!-- tree 71 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>19 6 1 2 -1.</_> + <_>19 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9217010412830859e-004</threshold> + <left_node>1</left_node> + <right_val>0.5459282994270325</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 7 8 13 -1.</_> + <_>12 7 4 13 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0219938792288303</threshold> + <left_val>0.4715713858604431</left_val> + <right_val>0.5690075159072876</right_val></_></_> + <_> + <!-- tree 72 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 1 2 -1.</_> + <_>0 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.8907777788117528e-004</threshold> + <left_node>1</left_node> + <right_val>0.3279826939105988</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 15 4 3 -1.</_> + <_>6 16 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.0893891602754593e-004</threshold> + <left_val>0.4302007853984833</left_val> + <right_val>0.5696045160293579</right_val></_></_> + <_> + <!-- tree 73 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 8 2 2 -1.</_> + <_>11 9 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1662710312521085e-004</threshold> + <left_node>1</left_node> + <right_val>0.5387235283851624</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 7 2 4 -1.</_> + <_>11 7 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0604078248143196e-003</threshold> + <left_val>0.5021423101425171</left_val> + <right_val>0.5965322256088257</right_val></_></_> + <_> + <!-- tree 74 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 13 2 3 -1.</_> + <_>4 14 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.5925969071686268e-004</threshold> + <left_node>1</left_node> + <right_val>0.3473494052886963</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 17 18 3 -1.</_> + <_>6 17 6 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0195261295884848</threshold> + <left_val>0.6475545167922974</left_val> + <right_val>0.4643782079219818</right_val></_></_></trees> + <stage_threshold>36.7265014648437500</stage_threshold> + <parent>13</parent> + <next>-1</next></_> + <_> + <!-- stage 15 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 18 5 -1.</_> + <_>7 0 6 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0412424392998219</threshold> + <left_val>0.3393315076828003</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 7 3 4 -1.</_> + <_>5 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0156267099082470</threshold> + <left_val>0.5104100108146668</left_val> + <right_val>0.7772815227508545</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 6 2 2 -1.</_> + <_>10 6 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9947189614176750e-004</threshold> + <left_val>0.3664673864841461</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 4 14 4 -1.</_> + <_>13 4 7 2 2.</_> + <_>6 6 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0037609608843923e-003</threshold> + <left_val>0.5405650734901428</left_val> + <right_val>0.3926205039024353</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 16 6 4 -1.</_> + <_>5 16 3 2 2.</_> + <_>8 18 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.8128242855891585e-004</threshold> + <left_val>0.4251519143581390</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 15 2 4 -1.</_> + <_>7 17 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3098999625071883e-004</threshold> + <left_val>0.4135144948959351</left_val> + <right_val>0.6925746202468872</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 5 5 14 -1.</_> + <_>8 12 5 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.1696720980107784e-003</threshold> + <left_node>1</left_node> + <right_val>0.3455873131752014</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 9 2 2 -1.</_> + <_>9 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0587369799613953e-003</threshold> + <left_val>0.2234193980693817</left_val> + <right_val>0.5286118984222412</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 5 3 7 -1.</_> + <_>8 5 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.6395038953050971e-004</threshold> + <left_node>1</left_node> + <right_val>0.4206520020961762</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 3 9 -1.</_> + <_>0 3 3 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5089480224996805e-003</threshold> + <left_val>0.6502981781959534</left_val> + <right_val>0.4117597937583923</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 8 8 -1.</_> + <_>12 6 4 4 2.</_> + <_>8 10 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3975980002433062e-003</threshold> + <left_node>1</left_node> + <right_val>0.3673301041126251</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 8 13 2 -1.</_> + <_>4 9 13 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0901279747486115e-003</threshold> + <left_val>0.2906238138675690</left_val> + <right_val>0.5445111989974976</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 3 6 1 -1.</_> + <_>6 3 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6524370585102588e-004</threshold> + <left_val>0.4233515858650208</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 1 2 6 -1.</_> + <_>9 3 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1602319106459618e-004</threshold> + <left_val>0.3886361122131348</left_val> + <right_val>0.6269165873527527</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 5 6 4 -1.</_> + <_>12 5 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3739910102449358e-004</threshold> + <left_val>0.5524451136589050</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 5 2 12 -1.</_> + <_>9 9 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0247397609055042</threshold> + <left_val>0.4960095882415772</left_val> + <right_val>0.5373491048812866</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 4 3 -1.</_> + <_>8 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0153428399935365</threshold> + <left_val>0.6849405169487000</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 4 3 -1.</_> + <_>8 13 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0115404697135091</threshold> + <left_val>0.4037235081195831</left_val> + <right_val>0.6786940097808838</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 3 6 7 -1.</_> + <_>12 3 2 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.4230621792376041e-003</threshold> + <left_node>1</left_node> + <right_val>0.3814676105976105</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 10 16 6 -1.</_> + <_>3 12 16 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0129778096452355</threshold> + <left_val>0.5527058839797974</left_val> + <right_val>0.3744955956935883</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 3 10 -1.</_> + <_>5 10 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1063399724662304e-003</threshold> + <left_val>0.3520928919315338</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 10 3 6 -1.</_> + <_>6 13 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3743690215051174e-003</threshold> + <left_val>0.5641903281211853</left_val> + <right_val>0.3075025975704193</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>17 2 2 12 -1.</_> + <_>17 2 1 12 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0162337794899940</threshold> + <left_val>0.4888828098773956</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 6 2 14 -1.</_> + <_>16 13 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.1519351806491613e-004</threshold> + <left_val>0.5456321239471436</left_val> + <right_val>0.4743550121784210</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 11 12 9 -1.</_> + <_>3 14 12 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0907824933528900</threshold> + <left_val>0.2925248146057129</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 4 12 -1.</_> + <_>2 2 2 12 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0116652101278305</threshold> + <left_val>0.4688454866409302</left_val> + <right_val>0.6230347752571106</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 0 2 18 -1.</_> + <_>18 0 1 18 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0232864096760750</threshold> + <left_val>0.6895843148231506</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 12 3 2 -1.</_> + <_>16 13 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1559339947998524e-003</threshold> + <left_val>0.5355802178382874</left_val> + <right_val>0.3423466086387634</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 2 15 -1.</_> + <_>1 2 1 15 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.3167220428586006e-003</threshold> + <left_val>0.5937076210975647</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 10 2 4 -1.</_> + <_>1 12 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5610599657520652e-003</threshold> + <left_val>0.4708659946918488</left_val> + <right_val>0.2736997008323669</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 1 2 18 -1.</_> + <_>11 1 1 18 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0140766398981214</threshold> + <left_val>0.5287156105041504</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 2 14 2 -1.</_> + <_>10 2 7 1 2.</_> + <_>3 3 7 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.1018589660525322e-003</threshold> + <left_val>0.5336192846298218</left_val> + <right_val>0.3224813938140869</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 1 2 18 -1.</_> + <_>8 1 1 18 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.8221647739410400e-003</threshold> + <left_val>0.2983910143375397</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 1 8 12 -1.</_> + <_>6 7 8 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.3852899000048637e-003</threshold> + <left_val>0.5623999238014221</left_val> + <right_val>0.4295912086963654</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 4 3 -1.</_> + <_>8 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.3483278974890709e-003</threshold> + <left_node>1</left_node> + <right_val>0.6813961267471314</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 6 3 -1.</_> + <_>7 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.5707519855350256e-003</threshold> + <left_val>0.5857968926429749</left_val> + <right_val>0.4603429138660431</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 13 5 2 -1.</_> + <_>0 14 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3340100888162851e-003</threshold> + <left_node>1</left_node> + <right_val>0.2744851112365723</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 0 2 6 -1.</_> + <_>9 0 1 3 2.</_> + <_>10 3 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7432780265808105e-003</threshold> + <left_val>0.5047526955604553</left_val> + <right_val>0.2362741976976395</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 0 2 6 -1.</_> + <_>10 0 1 3 2.</_> + <_>9 3 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5055489540100098e-003</threshold> + <left_val>0.5242248177528381</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 3 6 -1.</_> + <_>10 7 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0125892497599125</threshold> + <left_val>0.4823690950870514</left_val> + <right_val>0.6752536892890930</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 0 2 6 -1.</_> + <_>9 0 1 3 2.</_> + <_>10 3 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.3358368352055550e-003</threshold> + <left_val>0.1734634935855866</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 3 6 -1.</_> + <_>9 7 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.7639651931822300e-003</threshold> + <left_val>0.6354380846023560</left_val> + <right_val>0.4587475061416626</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 6 2 6 -1.</_> + <_>9 6 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3599749654531479e-003</threshold> + <left_val>0.4580380916595459</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 4 4 3 -1.</_> + <_>9 4 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0284042600542307</threshold> + <left_val>0.5176380872726440</left_val> + <right_val>0.1204385012388229</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 4 3 -1.</_> + <_>0 5 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.2958156019449234e-003</threshold> + <left_val>0.2337957024574280</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 4 2 -1.</_> + <_>8 8 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1800320353358984e-003</threshold> + <left_val>0.3902814090251923</left_val> + <right_val>0.5652930140495300</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 6 6 3 -1.</_> + <_>12 6 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0948140881955624e-003</threshold> + <left_val>0.5512028932571411</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 3 12 -1.</_> + <_>9 10 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1679958812892437e-003</threshold> + <left_val>0.5455976128578186</left_val> + <right_val>0.4798949062824249</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 4 2 3 -1.</_> + <_>5 5 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.4458891972899437e-003</threshold> + <left_node>1</left_node> + <right_val>0.6127086877822876</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 1 3 -1.</_> + <_>5 7 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2766510481014848e-003</threshold> + <left_val>0.5317131876945496</left_val> + <right_val>0.3850932121276856</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 17 3 2 -1.</_> + <_>10 17 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.9404270723462105e-004</threshold> + <left_val>0.5446437001228333</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 7 20 2 -1.</_> + <_>0 8 20 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0423096083104610</threshold> + <left_val>0.5234643816947937</left_val> + <right_val>0.2213044017553330</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 3 6 7 -1.</_> + <_>6 3 2 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.6189671158790588e-003</threshold> + <left_val>0.4916197955608368</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 10 6 10 -1.</_> + <_>5 10 3 5 2.</_> + <_>8 15 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.2401198558509350e-003</threshold> + <left_val>0.1471475958824158</left_val> + <right_val>0.4852893948554993</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 17 3 2 -1.</_> + <_>10 17 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5610670931637287e-003</threshold> + <left_val>0.2773773968219757</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 10 2 2 -1.</_> + <_>9 11 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5506159949582070e-005</threshold> + <left_val>0.4626461863517761</left_val> + <right_val>0.5768079161643982</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 17 3 2 -1.</_> + <_>9 17 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.1903791502118111e-003</threshold> + <left_val>0.1644289940595627</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 1 3 -1.</_> + <_>5 7 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1186462193727493e-004</threshold> + <left_val>0.4778591096401215</left_val> + <right_val>0.6261864900588989</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 1 20 2 -1.</_> + <_>10 1 10 1 2.</_> + <_>0 2 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0137798096984625</threshold> + <left_val>0.5257307887077332</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 2 6 9 -1.</_> + <_>14 5 6 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1290319962427020e-003</threshold> + <left_val>0.5498048067092896</left_val> + <right_val>0.3983106911182404</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 3 3 2 -1.</_> + <_>5 4 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0610350000206381e-004</threshold> + <left_val>0.4033519029617310</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 4 2 -1.</_> + <_>7 4 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6695790691301227e-004</threshold> + <left_val>0.4149340093135834</left_val> + <right_val>0.5795341134071350</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 2 6 9 -1.</_> + <_>14 5 6 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1290319962427020e-003</threshold> + <left_node>1</left_node> + <right_val>0.3934114873409271</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 12 20 6 -1.</_> + <_>0 14 20 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1201934963464737</threshold> + <left_val>0.0734004825353622</left_val> + <right_val>0.5202586054801941</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 2 16 4 -1.</_> + <_>2 2 8 2 2.</_> + <_>10 4 8 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0152307404205203</threshold> + <left_val>0.3749505877494812</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 12 5 3 -1.</_> + <_>7 13 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5759829916059971e-003</threshold> + <left_val>0.5078150033950806</left_val> + <right_val>0.6606066226959229</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 9 6 10 -1.</_> + <_>14 9 3 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0134794600307941</threshold> + <left_val>0.4547711014747620</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 6 3 2 -1.</_> + <_>16 7 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1162950433790684e-003</threshold> + <left_val>0.3311006128787994</left_val> + <right_val>0.5384259223937988</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 9 6 10 -1.</_> + <_>3 9 3 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0178777091205120</threshold> + <left_val>0.6513252854347229</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 16 5 2 -1.</_> + <_>0 17 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0931970318779349e-003</threshold> + <left_val>0.5264765024185181</left_val> + <right_val>0.3456991016864777</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 12 2 3 -1.</_> + <_>9 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.0553159303963184e-003</threshold> + <left_val>0.6268613934516907</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 2 12 -1.</_> + <_>9 11 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6365049891173840e-003</threshold> + <left_val>0.5399212837219238</left_val> + <right_val>0.4345397055149078</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 2 6 2 -1.</_> + <_>5 2 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.7896481747739017e-005</threshold> + <left_val>0.3835605978965759</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 1 1 2 -1.</_> + <_>4 2 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2714448752813041e-004</threshold> + <left_val>0.3337667882442474</left_val> + <right_val>0.5539165735244751</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 15 1 2 -1.</_> + <_>11 16 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3425030889920890e-004</threshold> + <left_node>1</left_node> + <right_val>0.5788270235061646</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 1 16 2 -1.</_> + <_>11 1 8 1 2.</_> + <_>3 2 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0140055799856782</threshold> + <left_val>0.5275077819824219</left_val> + <right_val>0.2701125144958496</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 6 2 2 -1.</_> + <_>3 6 1 1 2.</_> + <_>4 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.2654931358993053e-004</threshold> + <left_val>0.5852280259132385</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 11 10 6 -1.</_> + <_>5 11 5 3 2.</_> + <_>10 14 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.9504268206655979e-003</threshold> + <left_val>0.4728336930274963</left_val> + <right_val>0.3313918113708496</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 11 4 6 -1.</_> + <_>10 14 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.8086868375539780e-004</threshold> + <left_node>1</left_node> + <right_val>0.4258810877799988</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 9 6 11 -1.</_> + <_>16 9 2 11 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0120180202648044</threshold> + <left_val>0.5609787106513977</left_val> + <right_val>0.4895192086696625</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 9 6 11 -1.</_> + <_>2 9 2 11 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1452154070138931</threshold> + <left_val>0.0438944809138775</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 11 16 6 -1.</_> + <_>2 11 8 3 2.</_> + <_>10 14 8 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.6049019806087017e-003</threshold> + <left_val>0.4229170978069305</left_val> + <right_val>0.5616292953491211</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 0 8 10 -1.</_> + <_>16 0 4 5 2.</_> + <_>12 5 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0349097512662411</threshold> + <left_node>1</left_node> + <right_val>0.4788128137588501</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 2 6 4 -1.</_> + <_>16 2 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.7478420417755842e-003</threshold> + <left_val>0.4800282120704651</left_val> + <right_val>0.5801389217376709</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 8 10 -1.</_> + <_>0 0 4 5 2.</_> + <_>4 5 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0330380313098431</threshold> + <left_node>1</left_node> + <right_val>0.7078176140785217</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 6 4 -1.</_> + <_>2 2 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6872599739581347e-003</threshold> + <left_val>0.4449624121189117</left_val> + <right_val>0.5957731008529663</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 9 15 2 -1.</_> + <_>9 9 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5311939902603626e-003</threshold> + <left_val>0.4177047014236450</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 3 4 8 -1.</_> + <_>14 3 2 4 2.</_> + <_>12 7 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1058510541915894e-003</threshold> + <left_val>0.5372948050498962</left_val> + <right_val>0.3736926913261414</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 2 2 9 -1.</_> + <_>10 2 1 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.7599847465753555e-003</threshold> + <left_val>0.6658807992935181</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 20 1 -1.</_> + <_>10 2 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0230033099651337</threshold> + <left_val>0.2647922039031982</left_val> + <right_val>0.5101817846298218</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 1 4 5 -1.</_> + <_>16 1 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3664818406105042e-003</threshold> + <left_val>0.4548634886741638</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 0 4 6 -1.</_> + <_>16 3 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0389717705547810</threshold> + <left_val>0.5157061815261841</left_val> + <right_val>0.3436439037322998</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 3 6 4 -1.</_> + <_>6 3 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0277671907097101</threshold> + <left_val>0.2354391068220139</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 18 5 -1.</_> + <_>6 0 6 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.8894089460372925e-003</threshold> + <left_val>0.6887741088867188</left_val> + <right_val>0.5111051797866821</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 2 12 14 -1.</_> + <_>12 2 6 7 2.</_> + <_>6 9 6 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2073140610009432e-003</threshold> + <left_val>0.5438867807388306</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 8 3 5 -1.</_> + <_>12 8 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.7484978353604674e-004</threshold> + <left_val>0.5451148748397827</left_val> + <right_val>0.4831353127956390</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 12 2 2 -1.</_> + <_>5 13 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.1947520114481449e-003</threshold> + <left_val>0.2113419026136398</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 10 4 3 -1.</_> + <_>7 10 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6169899501837790e-004</threshold> + <left_val>0.5273681879043579</left_val> + <right_val>0.3992587029933929</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 9 15 2 -1.</_> + <_>9 9 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2421479225158691e-003</threshold> + <left_val>0.4688260853290558</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 7 6 2 -1.</_> + <_>12 7 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2139769969508052e-003</threshold> + <left_val>0.5504235029220581</left_val> + <right_val>0.4384871125221252</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 9 15 2 -1.</_> + <_>6 9 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9469770379364491e-003</threshold> + <left_val>0.3892847001552582</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 0 2 10 -1.</_> + <_>5 0 1 5 2.</_> + <_>6 5 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9291830034926534e-004</threshold> + <left_val>0.6001722812652588</left_val> + <right_val>0.4561662971973419</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 20 14 -1.</_> + <_>0 7 20 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.6255072951316834</threshold> + <left_node>1</left_node> + <right_val>0.0681256130337715</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 7 8 4 -1.</_> + <_>12 7 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.7744520753622055e-003</threshold> + <left_val>0.4813025891780853</left_val> + <right_val>0.5620657205581665</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 7 8 4 -1.</_> + <_>4 7 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0943782478570938</threshold> + <left_node>1</left_node> + <right_val>0.0666322931647301</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 1 3 3 -1.</_> + <_>9 1 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9560910295695066e-003</threshold> + <left_val>0.3588232994079590</left_val> + <right_val>0.5295407176017761</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 3 4 -1.</_> + <_>10 7 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0652769431471825e-003</threshold> + <left_val>0.4822688102722168</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 9 3 1 -1.</_> + <_>10 9 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.2138071148656309e-004</threshold> + <left_val>0.4670332968235016</left_val> + <right_val>0.5683112740516663</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 9 3 2 -1.</_> + <_>8 10 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4220191193744540e-004</threshold> + <left_node>1</left_node> + <right_val>0.5360795259475708</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 4 2 8 -1.</_> + <_>8 4 1 4 2.</_> + <_>9 8 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.7313501127064228e-003</threshold> + <left_val>0.6137245893478394</left_val> + <right_val>0.3188089132308960</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 8 12 3 -1.</_> + <_>5 9 12 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5395509544759989e-003</threshold> + <left_val>0.4487720131874085</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 14 1 3 -1.</_> + <_>11 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4315000046044588e-003</threshold> + <left_val>0.4894166886806488</left_val> + <right_val>0.6716653704643250</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 10 3 6 -1.</_> + <_>6 12 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0155816199257970</threshold> + <left_val>0.3336741924285889</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 17 8 3 -1.</_> + <_>4 18 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0816920548677444e-003</threshold> + <left_val>0.4718219935894013</left_val> + <right_val>0.5960627198219299</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>17 6 2 3 -1.</_> + <_>17 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2197659127414227e-003</threshold> + <left_val>0.3588554859161377</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 2 2 -1.</_> + <_>10 12 1 1 2.</_> + <_>9 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.3048671260476112e-004</threshold> + <left_val>0.6218712925910950</left_val> + <right_val>0.4817300140857697</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 13 2 4 -1.</_> + <_>9 13 1 2 2.</_> + <_>10 15 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.7418707981705666e-003</threshold> + <left_val>0.2550027072429657</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 11 2 3 -1.</_> + <_>9 12 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.2950369901955128e-003</threshold> + <left_val>0.6728078722953796</left_val> + <right_val>0.5051063895225525</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 12 10 -1.</_> + <_>11 5 6 5 2.</_> + <_>5 10 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5216049291193485e-003</threshold> + <left_val>0.5401909947395325</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 12 12 -1.</_> + <_>12 3 6 6 2.</_> + <_>6 9 6 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4289379362016916e-003</threshold> + <left_val>0.5419461727142334</left_val> + <right_val>0.4347142875194550</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 2 2 -1.</_> + <_>5 7 1 1 2.</_> + <_>6 8 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5261470582336187e-003</threshold> + <left_val>0.6970624923706055</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 3 3 2 -1.</_> + <_>5 3 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4817339833825827e-003</threshold> + <left_val>0.3263416886329651</left_val> + <right_val>0.4917873144149780</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 2 12 14 -1.</_> + <_>12 2 6 7 2.</_> + <_>6 9 6 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.2247453033924103</threshold> + <left_val>7.2937291115522385e-003</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 2 12 3 -1.</_> + <_>9 2 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8342509176582098e-003</threshold> + <left_val>0.4579229950904846</left_val> + <right_val>0.5379881262779236</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 1 18 17 -1.</_> + <_>7 1 6 17 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0208216104656458</threshold> + <left_val>0.6024088859558106</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 9 10 1 -1.</_> + <_>5 9 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4896340144332498e-004</threshold> + <left_val>0.3336144089698792</left_val> + <right_val>0.4962815940380096</right_val></_></_> + <_> + <!-- tree 63 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 8 4 3 -1.</_> + <_>16 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3524499740451574e-003</threshold> + <left_val>0.3558751046657562</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 6 6 -1.</_> + <_>7 16 6 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0372798815369606</threshold> + <left_val>0.1698562949895859</left_val> + <right_val>0.5208985805511475</right_val></_></_> + <_> + <!-- tree 64 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 14 1 6 -1.</_> + <_>6 16 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3896770542487502e-004</threshold> + <left_node>1</left_node> + <right_val>0.5590686202049255</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 17 4 2 -1.</_> + <_>6 18 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1912620761431754e-004</threshold> + <left_val>0.5848733782768250</left_val> + <right_val>0.3795836865901947</right_val></_></_> + <_> + <!-- tree 65 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 18 6 2 -1.</_> + <_>13 18 3 1 2.</_> + <_>10 19 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.4003461264073849e-004</threshold> + <left_node>1</left_node> + <right_val>0.5670288205146790</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 8 1 3 -1.</_> + <_>16 9 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8956850767135620e-003</threshold> + <left_val>0.5182694792747498</left_val> + <right_val>0.3327709138393402</right_val></_></_> + <_> + <!-- tree 66 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 4 3 -1.</_> + <_>8 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6084529925137758e-003</threshold> + <left_node>1</left_node> + <right_val>0.5410485863685608</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 15 1 2 -1.</_> + <_>9 16 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.7474587811157107e-004</threshold> + <left_val>0.6022642254829407</left_val> + <right_val>0.3644644021987915</right_val></_></_> + <_> + <!-- tree 67 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 0 3 12 -1.</_> + <_>14 0 1 12 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0134350396692753</threshold> + <left_node>1</left_node> + <right_val>0.3441281914710999</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 11 1 3 -1.</_> + <_>15 12 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1368139423429966e-003</threshold> + <left_val>0.5292434096336365</left_val> + <right_val>0.2747075855731964</right_val></_></_> + <_> + <!-- tree 68 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 15 3 3 -1.</_> + <_>8 16 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0141576295718551</threshold> + <left_node>1</left_node> + <right_val>0.8027868270874023</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 0 3 12 -1.</_> + <_>5 0 1 12 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3884391672909260e-003</threshold> + <left_val>0.5222315192222595</left_val> + <right_val>0.3586727976799011</right_val></_></_> + <_> + <!-- tree 69 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 3 3 -1.</_> + <_>10 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.8013410568237305e-003</threshold> + <left_val>0.4900386929512024</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 9 3 1 -1.</_> + <_>10 9 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8858849438838661e-004</threshold> + <left_val>0.4681056141853333</left_val> + <right_val>0.5721952915191650</right_val></_></_> + <_> + <!-- tree 70 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 2 12 14 -1.</_> + <_>2 2 6 7 2.</_> + <_>8 9 6 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2143588867038488e-003</threshold> + <left_val>0.5388805866241455</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 2 12 3 -1.</_> + <_>8 2 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.4642972797155380e-003</threshold> + <left_val>0.6675537824630737</left_val> + <right_val>0.3448441922664642</right_val></_></_> + <_> + <!-- tree 71 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 18 2 2 -1.</_> + <_>18 18 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0150443902239203</threshold> + <left_node>1</left_node> + <right_val>0.9239614009857178</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>17 2 3 8 -1.</_> + <_>18 2 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.6346402056515217e-003</threshold> + <left_val>0.4884896874427795</left_val> + <right_val>0.6306052803993225</right_val></_></_> + <_> + <!-- tree 72 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 18 2 2 -1.</_> + <_>1 18 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.3895121305249631e-004</threshold> + <left_node>1</left_node> + <right_val>0.3997431099414825</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 11 2 6 -1.</_> + <_>6 14 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1157610171940178e-004</threshold> + <left_val>0.5663982033729553</left_val> + <right_val>0.3972980976104736</right_val></_></_> + <_> + <!-- tree 73 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 10 5 6 -1.</_> + <_>13 12 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0275149494409561</threshold> + <left_node>1</left_node> + <right_val>0.5201063752174377</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 15 3 -1.</_> + <_>5 9 15 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0516030602157116</threshold> + <left_val>0.5140730142593384</left_val> + <right_val>0.1245130971074104</right_val></_></_> + <_> + <!-- tree 74 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 10 5 6 -1.</_> + <_>2 12 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.7510651163756847e-003</threshold> + <left_node>1</left_node> + <right_val>0.3802095055580139</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 8 15 3 -1.</_> + <_>0 9 15 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1457639522850513e-003</threshold> + <left_val>0.3309448063373566</left_val> + <right_val>0.5474538803100586</right_val></_></_> + <_> + <!-- tree 75 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 2 3 1 -1.</_> + <_>17 2 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.8178009930998087e-004</threshold> + <left_node>1</left_node> + <right_val>0.4892601966857910</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>17 4 3 2 -1.</_> + <_>18 4 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.3638541875407100e-004</threshold> + <left_val>0.5937399268150330</left_val> + <right_val>0.4664669036865234</right_val></_></_> + <_> + <!-- tree 76 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 8 8 12 -1.</_> + <_>0 8 4 6 2.</_> + <_>4 14 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0416674911975861</threshold> + <left_node>1</left_node> + <right_val>0.7021353244781494</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 7 8 6 -1.</_> + <_>1 7 4 3 2.</_> + <_>5 10 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.7763780243694782e-003</threshold> + <left_val>0.3222751021385193</left_val> + <right_val>0.5068395137786865</right_val></_></_> + <_> + <!-- tree 77 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 1 6 2 -1.</_> + <_>16 1 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9170580673962831e-003</threshold> + <left_node>1</left_node> + <right_val>0.4717701077461243</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 0 4 4 -1.</_> + <_>17 0 2 2 2.</_> + <_>15 2 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2789530814625323e-004</threshold> + <left_val>0.4509383141994476</left_val> + <right_val>0.5651162862777710</right_val></_></_></trees> + <stage_threshold>38.2360382080078130</stage_threshold> + <parent>14</parent> + <next>-1</next></_> + <_> + <!-- stage 16 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 1 4 11 -1.</_> + <_>3 1 2 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0117298001423478</threshold> + <left_val>0.3805224895477295</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 1 8 -1.</_> + <_>5 9 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1712179984897375e-003</threshold> + <left_val>0.3140017986297607</left_val> + <right_val>0.6858146190643311</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 6 1 -1.</_> + <_>9 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.3555096536874771e-003</threshold> + <left_node>1</left_node> + <right_val>0.6834673285484314</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 12 2 -1.</_> + <_>8 7 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6570610459893942e-003</threshold> + <left_val>0.2992472946643829</left_val> + <right_val>0.5475677847862244</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 4 4 4 -1.</_> + <_>8 6 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3387809740379453e-003</threshold> + <left_node>1</left_node> + <right_val>0.2941406965255737</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 4 9 1 -1.</_> + <_>5 4 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7580550047568977e-004</threshold> + <left_val>0.3896977901458740</left_val> + <right_val>0.5872970819473267</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 12 2 8 -1.</_> + <_>9 16 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9473248869180679e-003</threshold> + <left_val>0.3576571941375732</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 8 14 12 -1.</_> + <_>3 14 14 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.3220899105072021e-003</threshold> + <left_val>0.5232400894165039</left_val> + <right_val>0.3231087923049927</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 13 7 3 -1.</_> + <_>6 14 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4366689659655094e-003</threshold> + <left_node>1</left_node> + <right_val>0.6715673208236694</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 9 6 3 -1.</_> + <_>7 9 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1322889369912446e-004</threshold> + <left_val>0.5470541715621948</left_val> + <right_val>0.3863396048545837</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 1 6 3 -1.</_> + <_>12 2 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8024631366133690e-003</threshold> + <left_val>0.2771460115909576</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 6 2 -1.</_> + <_>8 13 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.6611228501424193e-004</threshold> + <left_val>0.4689136147499085</left_val> + <right_val>0.5851963758468628</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 18 2 -1.</_> + <_>0 2 9 1 2.</_> + <_>9 3 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.2346500605344772e-003</threshold> + <left_val>0.2704397141933441</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 10 3 6 -1.</_> + <_>6 13 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4676499631605111e-005</threshold> + <left_val>0.5622550249099731</left_val> + <right_val>0.3579317033290863</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 0 6 6 -1.</_> + <_>14 0 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.7007937729358673e-003</threshold> + <left_val>0.4173871874809265</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 0 5 8 -1.</_> + <_>15 4 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.5320650786161423e-003</threshold> + <left_val>0.4195013046264648</left_val> + <right_val>0.5549468994140625</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 16 6 4 -1.</_> + <_>9 16 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0216164104640484</threshold> + <left_node>1</left_node> + <right_val>0.2857390940189362</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 11 14 4 -1.</_> + <_>2 11 7 2 2.</_> + <_>9 13 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.4567608963698149e-003</threshold> + <left_val>0.6024532914161682</left_val> + <right_val>0.4377507865428925</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 10 6 10 -1.</_> + <_>14 10 3 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0229143202304840</threshold> + <left_val>0.4689350128173828</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 8 10 12 -1.</_> + <_>14 8 5 6 2.</_> + <_>9 14 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.4328910987824202e-003</threshold> + <left_val>0.4664604961872101</left_val> + <right_val>0.5762562155723572</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 10 6 10 -1.</_> + <_>3 10 3 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.6510833352804184e-003</threshold> + <left_val>0.6381739974021912</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 8 10 12 -1.</_> + <_>1 8 5 6 2.</_> + <_>6 14 5 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4510039472952485e-003</threshold> + <left_val>0.3711487948894501</left_val> + <right_val>0.5530750751495361</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 3 6 1 -1.</_> + <_>11 3 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.8191719949245453e-003</threshold> + <left_val>0.5264362096786499</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 4 6 3 -1.</_> + <_>9 4 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0798550394829363e-004</threshold> + <left_val>0.3730512857437134</left_val> + <right_val>0.5445731282234192</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 3 6 1 -1.</_> + <_>7 3 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9962218143045902e-003</threshold> + <left_val>0.2438170015811920</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 5 6 3 -1.</_> + <_>6 5 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5010139577498194e-005</threshold> + <left_val>0.5324671268463135</left_val> + <right_val>0.3682988882064819</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 16 3 3 -1.</_> + <_>9 17 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2428788729012012e-003</threshold> + <left_val>0.6481474041938782</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 14 6 3 -1.</_> + <_>8 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.1374982148408890e-003</threshold> + <left_val>0.4896158874034882</left_val> + <right_val>0.6558843255043030</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 0 8 12 -1.</_> + <_>6 0 4 6 2.</_> + <_>10 6 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.8254585862159729e-003</threshold> + <left_node>1</left_node> + <right_val>0.3613870143890381</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 12 2 3 -1.</_> + <_>4 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.4092212384566665e-004</threshold> + <left_val>0.5502895712852478</left_val> + <right_val>0.3632518053054810</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 16 6 3 -1.</_> + <_>12 17 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0125033501535654</threshold> + <left_val>0.2261132001876831</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 12 7 2 -1.</_> + <_>7 13 7 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.6759645491838455e-003</threshold> + <left_val>0.4987890124320984</left_val> + <right_val>0.6847196221351624</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 16 6 3 -1.</_> + <_>2 17 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0104167601093650</threshold> + <left_val>0.2446299046278000</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 7 16 6 -1.</_> + <_>0 10 16 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7432460337877274e-003</threshold> + <left_val>0.3511525094509125</left_val> + <right_val>0.5399826765060425</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 3 3 -1.</_> + <_>10 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2385691776871681e-003</threshold> + <left_val>0.6823673248291016</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 3 5 -1.</_> + <_>10 7 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0183258708566427</threshold> + <left_val>0.4891580045223236</left_val> + <right_val>0.7135618925094605</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 5 20 10 -1.</_> + <_>0 5 10 5 2.</_> + <_>10 10 10 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0243345405906439</threshold> + <left_val>0.3522521853446960</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 1 4 2 -1.</_> + <_>5 1 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6469361404888332e-004</threshold> + <left_val>0.4049868881702423</left_val> + <right_val>0.5515825748443604</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 6 8 10 -1.</_> + <_>11 6 4 5 2.</_> + <_>7 11 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.4260009415447712e-003</threshold> + <left_node>1</left_node> + <right_val>0.4126769900321960</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>17 6 3 2 -1.</_> + <_>17 7 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5827318895608187e-003</threshold> + <left_val>0.2899428904056549</left_val> + <right_val>0.5386431813240051</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 6 8 10 -1.</_> + <_>5 6 4 5 2.</_> + <_>9 11 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0545699624344707e-003</threshold> + <left_node>1</left_node> + <right_val>0.3771344125270844</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 12 10 6 -1.</_> + <_>5 14 10 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.1257691383361816e-004</threshold> + <left_val>0.5827386975288391</left_val> + <right_val>0.4267556965351105</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 3 3 -1.</_> + <_>10 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6589010376483202e-003</threshold> + <left_val>0.4688124954700470</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 3 2 6 -1.</_> + <_>11 3 1 3 2.</_> + <_>10 6 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.8598358407616615e-003</threshold> + <left_val>0.4853922128677368</left_val> + <right_val>0.6163644790649414</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 3 3 -1.</_> + <_>0 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0638676881790161e-003</threshold> + <left_node>1</left_node> + <right_val>0.1749195009469986</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 16 8 4 -1.</_> + <_>3 16 4 2 2.</_> + <_>7 18 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.5898370705544949e-003</threshold> + <left_val>0.6826189756393433</left_val> + <right_val>0.4894070029258728</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 5 2 -1.</_> + <_>8 14 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6368070868775249e-004</threshold> + <left_val>0.4614596068859100</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 4 12 -1.</_> + <_>8 11 4 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0625949501991272</threshold> + <left_val>0.5183017253875732</left_val> + <right_val>0.2686696052551270</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 9 2 2 -1.</_> + <_>6 9 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.9753207713365555e-003</threshold> + <left_val>0.1758466958999634</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 15 2 3 -1.</_> + <_>9 16 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0880119409412146e-003</threshold> + <left_val>0.6369382143020630</left_val> + <right_val>0.4930044114589691</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 9 2 3 -1.</_> + <_>13 9 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.5644511748105288e-004</threshold> + <left_node>1</left_node> + <right_val>0.4139398932456970</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 0 6 17 -1.</_> + <_>16 0 2 17 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0317214615643024</threshold> + <left_val>0.6045557260513306</left_val> + <right_val>0.4816364049911499</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 10 2 2 -1.</_> + <_>6 10 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2898689601570368e-003</threshold> + <left_val>0.5450810790061951</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 9 9 1 -1.</_> + <_>5 9 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.8405163735151291e-003</threshold> + <left_val>0.2924000918865204</left_val> + <right_val>0.6699606180191040</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 11 2 3 -1.</_> + <_>9 12 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2237089686095715e-003</threshold> + <left_node>1</left_node> + <right_val>0.6282836794853210</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 11 6 3 -1.</_> + <_>7 12 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.4232585504651070e-003</threshold> + <left_val>0.5986570119857788</left_val> + <right_val>0.4852580130100250</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 3 2 -1.</_> + <_>0 7 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.2726322105154395e-004</threshold> + <left_val>0.3340049088001251</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 0 6 1 -1.</_> + <_>9 0 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6842931769788265e-003</threshold> + <left_val>0.5168923735618591</left_val> + <right_val>0.2679480016231537</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 16 3 3 -1.</_> + <_>9 17 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0379579616710544e-003</threshold> + <left_val>0.5925791859626770</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 13 17 6 -1.</_> + <_>2 16 17 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.1342730447649956e-003</threshold> + <left_val>0.5437728166580200</left_val> + <right_val>0.4346800148487091</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 3 3 7 -1.</_> + <_>2 3 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4971119817346334e-003</threshold> + <left_val>0.4129500985145569</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 1 6 4 -1.</_> + <_>3 1 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5762320253998041e-003</threshold> + <left_val>0.4522874057292938</left_val> + <right_val>0.6556292176246643</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 1 6 5 -1.</_> + <_>14 1 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7496247142553329e-003</threshold> + <left_val>0.4532034099102020</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 2 3 2 -1.</_> + <_>13 3 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5103599121794105e-004</threshold> + <left_val>0.3785983920097351</left_val> + <right_val>0.5416975021362305</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 1 6 5 -1.</_> + <_>3 1 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0173255708068609</threshold> + <left_val>0.6884248256683350</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 3 2 6 -1.</_> + <_>2 5 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.3266440778970718e-003</threshold> + <left_val>0.3091326057910919</left_val> + <right_val>0.5243654847145081</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 10 3 2 -1.</_> + <_>9 11 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5157909729168750e-005</threshold> + <left_val>0.4765793979167938</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 4 3 -1.</_> + <_>8 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8041470320895314e-003</threshold> + <left_val>0.4725385904312134</left_val> + <right_val>0.5716555118560791</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 3 3 1 -1.</_> + <_>7 3 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0691560823470354e-003</threshold> + <left_node>1</left_node> + <right_val>0.2143359929323196</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 2 3 12 -1.</_> + <_>8 6 3 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.2225510444259271e-005</threshold> + <left_val>0.5653210282325745</left_val> + <right_val>0.4385111033916473</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 12 1 2 -1.</_> + <_>11 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0072169970953837e-004</threshold> + <left_node>1</left_node> + <right_val>0.5924776196479797</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 12 2 2 -1.</_> + <_>12 12 1 1 2.</_> + <_>11 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3573700562119484e-004</threshold> + <left_val>0.4573448896408081</left_val> + <right_val>0.5769382715225220</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 2 2 -1.</_> + <_>5 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.2137878527864814e-004</threshold> + <left_node>1</left_node> + <right_val>0.5992609262466431</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 1 3 -1.</_> + <_>5 5 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0316581251099706e-004</threshold> + <left_val>0.3610081076622009</left_val> + <right_val>0.5049325823783875</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 11 16 4 -1.</_> + <_>11 11 8 2 2.</_> + <_>3 13 8 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0395824797451496</threshold> + <left_node>1</left_node> + <right_val>0.1538489013910294</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 10 20 3 -1.</_> + <_>0 11 20 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0475196801126003</threshold> + <left_val>0.5216140747070313</left_val> + <right_val>0.1428391039371491</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 11 16 4 -1.</_> + <_>1 11 8 2 2.</_> + <_>9 13 8 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0188717599958181</threshold> + <left_node>1</left_node> + <right_val>0.2825506925582886</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 2 4 2 -1.</_> + <_>4 3 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9876459049992263e-004</threshold> + <left_val>0.4035016894340515</left_val> + <right_val>0.5437793135643005</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 6 2 2 -1.</_> + <_>13 6 1 1 2.</_> + <_>12 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6556600136682391e-004</threshold> + <left_val>0.4668996930122376</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 11 6 6 -1.</_> + <_>12 13 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7090610973536968e-003</threshold> + <left_val>0.5331354737281799</left_val> + <right_val>0.4136571884155273</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 6 2 2 -1.</_> + <_>6 6 1 1 2.</_> + <_>7 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8931160448119044e-003</threshold> + <left_val>0.7155163288116455</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 4 4 16 -1.</_> + <_>8 4 2 16 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0130569497123361</threshold> + <left_val>0.3117899894714356</left_val> + <right_val>0.5208439826965332</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 18 3 2 -1.</_> + <_>11 19 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9484119547996670e-004</threshold> + <left_node>1</left_node> + <right_val>0.4637658894062042</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 17 6 2 -1.</_> + <_>12 17 3 1 2.</_> + <_>9 18 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5093220099515747e-005</threshold> + <left_val>0.4561653137207031</left_val> + <right_val>0.5445234179496765</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 13 5 2 -1.</_> + <_>2 14 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.1617960202274844e-006</threshold> + <left_node>1</left_node> + <right_val>0.4193108081817627</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 15 2 2 -1.</_> + <_>3 16 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0164679628796875e-004</threshold> + <left_val>0.5966237783432007</left_val> + <right_val>0.4100500047206879</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 3 3 -1.</_> + <_>10 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4195181690156460e-003</threshold> + <left_val>0.4845055937767029</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 2 6 -1.</_> + <_>9 6 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.3984181508421898e-003</threshold> + <left_val>0.6206846237182617</left_val> + <right_val>0.4931209087371826</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 14 7 6 -1.</_> + <_>1 16 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8031201846897602e-003</threshold> + <left_node>1</left_node> + <right_val>0.5282462835311890</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 1 2 11 -1.</_> + <_>9 1 1 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0107314297929406</threshold> + <left_val>0.9104834198951721</left_val> + <right_val>0.3455922007560730</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 4 -1.</_> + <_>9 7 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4246780192479491e-003</threshold> + <left_val>0.4708554148674011</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 10 2 1 -1.</_> + <_>11 10 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.2717568147927523e-005</threshold> + <left_val>0.5651623010635376</left_val> + <right_val>0.4731023907661438</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 3 9 -1.</_> + <_>1 3 1 9 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4803409837186337e-003</threshold> + <left_node>1</left_node> + <right_val>0.6175886988639832</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 3 3 6 -1.</_> + <_>0 5 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0789140146225691e-003</threshold> + <left_val>0.5139533281326294</left_val> + <right_val>0.3423087894916534</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 15 2 2 -1.</_> + <_>12 15 1 1 2.</_> + <_>11 16 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1310289846733212e-003</threshold> + <left_node>1</left_node> + <right_val>0.4918282032012940</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 14 2 2 -1.</_> + <_>12 14 1 1 2.</_> + <_>11 15 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0410690447315574e-003</threshold> + <left_val>0.5942087173461914</left_val> + <right_val>0.4923042953014374</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 15 2 2 -1.</_> + <_>7 15 1 1 2.</_> + <_>8 16 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1648540385067463e-003</threshold> + <left_node>1</left_node> + <right_val>0.6405271887779236</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 2 2 -1.</_> + <_>7 14 1 1 2.</_> + <_>8 15 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0057362103834748e-004</threshold> + <left_val>0.4504396915435791</left_val> + <right_val>0.6192076802253723</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 4 6 -1.</_> + <_>10 13 2 3 2.</_> + <_>8 16 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.8781538866460323e-003</threshold> + <left_val>0.5374813079833984</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 14 16 4 -1.</_> + <_>10 14 8 2 2.</_> + <_>2 16 8 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0352839007973671</threshold> + <left_val>0.2247101068496704</left_val> + <right_val>0.5217170715332031</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 2 2 -1.</_> + <_>9 9 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3320200378075242e-003</threshold> + <left_val>0.2554703056812286</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 7 5 3 -1.</_> + <_>7 8 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3177571129053831e-003</threshold> + <left_val>0.3792515993118286</left_val> + <right_val>0.5243226885795593</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 5 6 2 -1.</_> + <_>9 5 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1332940377760679e-004</threshold> + <left_val>0.3860337138175964</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 1 6 18 -1.</_> + <_>11 1 2 18 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0134679004549980</threshold> + <left_val>0.5380687713623047</left_val> + <right_val>0.4178363978862763</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 3 4 -1.</_> + <_>9 6 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2829169863834977e-003</threshold> + <left_val>0.6133623123168945</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 5 2 4 -1.</_> + <_>8 5 1 2 2.</_> + <_>9 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.1571638323366642e-004</threshold> + <left_val>0.4028537869453430</left_val> + <right_val>0.5536851882934570</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 13 2 6 -1.</_> + <_>10 13 1 3 2.</_> + <_>9 16 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.9254198782145977e-003</threshold> + <left_val>0.5279921293258667</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 0 3 18 -1.</_> + <_>12 0 1 18 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0337805896997452</threshold> + <left_val>0.2334675043821335</left_val> + <right_val>0.5175911784172058</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 0 3 18 -1.</_> + <_>7 0 1 18 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0378537215292454</threshold> + <left_val>0.1074853017926216</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 15 4 2 -1.</_> + <_>7 15 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.0752900531515479e-004</threshold> + <left_val>0.5345929861068726</left_val> + <right_val>0.4198938012123108</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 9 18 1 -1.</_> + <_>7 9 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1193809118121862e-003</threshold> + <left_val>0.3855825066566467</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 20 3 -1.</_> + <_>0 1 20 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0157149694859982</threshold> + <left_val>0.3335190117359161</left_val> + <right_val>0.5263202190399170</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 6 2 4 -1.</_> + <_>10 6 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8525702701881528e-004</threshold> + <left_val>0.5860397219657898</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 10 6 2 -1.</_> + <_>8 10 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8750501223839819e-004</threshold> + <left_val>0.5437784790992737</left_val> + <right_val>0.3716104924678803</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 7 20 1 -1.</_> + <_>0 7 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0280168596655130</threshold> + <left_node>1</left_node> + <right_val>0.3330754935741425</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 3 5 4 -1.</_> + <_>11 5 5 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9018839811906219e-003</threshold> + <left_val>0.5366597771644592</left_val> + <right_val>0.4693793952465057</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 10 1 -1.</_> + <_>10 7 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0206475593149662</threshold> + <left_node>1</left_node> + <right_val>0.1006956025958061</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 10 3 3 -1.</_> + <_>8 11 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3002571910619736e-003</threshold> + <left_val>0.4816035926342011</left_val> + <right_val>0.6215677261352539</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 0 16 8 -1.</_> + <_>10 0 8 4 2.</_> + <_>2 4 8 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0134591404348612</threshold> + <left_val>0.5461953878402710</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 0 9 10 -1.</_> + <_>11 5 9 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0103200403973460</threshold> + <left_val>0.4578453004360199</left_val> + <right_val>0.5419309735298157</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 8 18 -1.</_> + <_>4 2 4 18 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.3199074864387512</threshold> + <left_node>1</left_node> + <right_val>0.2008046954870224</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 2 6 -1.</_> + <_>0 2 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.2198798665776849e-004</threshold> + <left_val>0.5193281173706055</left_val> + <right_val>0.3912194073200226</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 0 9 2 -1.</_> + <_>6 1 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1852539288811386e-004</threshold> + <left_val>0.4299744069576263</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 1 12 2 -1.</_> + <_>4 2 12 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5891108564101160e-004</threshold> + <left_val>0.4344502985477448</left_val> + <right_val>0.5531973838806152</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 1 16 14 -1.</_> + <_>2 8 16 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.2099243998527527</threshold> + <left_val>0.1075721010565758</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 1 8 12 -1.</_> + <_>5 7 8 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.9328152090311050e-003</threshold> + <left_val>0.5762796998023987</left_val> + <right_val>0.4574643969535828</right_val></_></_> + <_> + <!-- tree 63 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 11 2 2 -1.</_> + <_>9 12 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3409130517393351e-003</threshold> + <left_node>1</left_node> + <right_val>0.7476807832717896</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 10 5 6 -1.</_> + <_>9 12 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7120270319283009e-003</threshold> + <left_val>0.5261765122413635</left_val> + <right_val>0.4505550861358643</right_val></_></_> + <_> + <!-- tree 64 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 0 13 8 -1.</_> + <_>3 4 13 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0287131909281015</threshold> + <left_val>0.4407103061676025</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 5 8 -1.</_> + <_>6 11 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6156550738960505e-003</threshold> + <left_val>0.4244270920753479</left_val> + <right_val>0.6892976760864258</right_val></_></_> + <_> + <!-- tree 65 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 2 3 -1.</_> + <_>9 6 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0135589698329568</threshold> + <left_val>0.1252267956733704</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 8 8 3 -1.</_> + <_>6 9 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.0331799644045532e-004</threshold> + <left_val>0.4077791869640350</left_val> + <right_val>0.5442817807197571</right_val></_></_> + <_> + <!-- tree 66 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 2 7 6 -1.</_> + <_>2 5 7 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.5601762142032385e-004</threshold> + <left_val>0.5378003716468811</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 1 14 4 -1.</_> + <_>2 1 7 2 2.</_> + <_>9 3 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4025330785661936e-003</threshold> + <left_val>0.3166579902172089</left_val> + <right_val>0.5285738110542297</right_val></_></_> + <_> + <!-- tree 67 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 14 1 3 -1.</_> + <_>11 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.4089901018887758e-003</threshold> + <left_node>1</left_node> + <right_val>0.4905214905738831</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 15 8 2 -1.</_> + <_>6 16 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0019602319225669e-004</threshold> + <left_val>0.4522736072540283</left_val> + <right_val>0.5580614209175110</right_val></_></_> + <_> + <!-- tree 68 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 1 3 -1.</_> + <_>8 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1901070140302181e-003</threshold> + <left_node>1</left_node> + <right_val>0.6612681746482849</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 11 2 8 -1.</_> + <_>8 15 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.3745369873940945e-003</threshold> + <left_val>0.5107765197753906</left_val> + <right_val>0.3386929929256439</right_val></_></_> + <_> + <!-- tree 69 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 15 8 2 -1.</_> + <_>6 16 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0019602319225669e-004</threshold> + <left_node>1</left_node> + <right_val>0.5707560181617737</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 16 8 3 -1.</_> + <_>7 17 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0173460692167282</threshold> + <left_val>0.5016021132469177</left_val> + <right_val>0.6306459903717041</right_val></_></_> + <_> + <!-- tree 70 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 16 2 2 -1.</_> + <_>0 17 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9568449351936579e-003</threshold> + <left_val>0.3017806112766266</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 16 8 4 -1.</_> + <_>1 16 4 2 2.</_> + <_>5 18 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0112290196120739</threshold> + <left_val>0.6293851137161255</left_val> + <right_val>0.4520488977432251</right_val></_></_> + <_> + <!-- tree 71 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 9 16 3 -1.</_> + <_>2 10 16 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6608388870954514e-003</threshold> + <left_val>0.3344007134437561</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 11 2 4 -1.</_> + <_>13 11 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0116151003167033</threshold> + <left_val>0.2825379073619843</left_val> + <right_val>0.5150970816612244</right_val></_></_> + <_> + <!-- tree 72 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 13 16 6 -1.</_> + <_>0 15 16 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0952486023306847</threshold> + <left_val>0.1398265063762665</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 11 2 4 -1.</_> + <_>6 11 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.3701781220734119e-003</threshold> + <left_val>0.5293998718261719</left_val> + <right_val>0.2331728041172028</right_val></_></_> + <_> + <!-- tree 73 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 2 2 18 -1.</_> + <_>19 2 1 9 2.</_> + <_>18 11 1 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0149539001286030</threshold> + <left_node>1</left_node> + <right_val>0.4940465986728668</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>19 7 1 9 -1.</_> + <_>19 10 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.7038792874664068e-004</threshold> + <left_val>0.5466570854187012</left_val> + <right_val>0.4626767933368683</right_val></_></_> + <_> + <!-- tree 74 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 2 18 -1.</_> + <_>0 2 1 9 2.</_> + <_>1 11 1 9 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8516198769211769e-003</threshold> + <left_node>1</left_node> + <right_val>0.6270040869712830</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 7 1 9 -1.</_> + <_>0 10 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1150549582671374e-004</threshold> + <left_val>0.5508140921592712</left_val> + <right_val>0.4061872959136963</right_val></_></_> + <_> + <!-- tree 75 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 12 2 2 -1.</_> + <_>14 13 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.9679190346505493e-006</threshold> + <left_node>1</left_node> + <right_val>0.4096567928791046</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 14 2 3 -1.</_> + <_>11 15 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.9677387839183211e-004</threshold> + <left_val>0.5615556836128235</left_val> + <right_val>0.4666886031627655</right_val></_></_> + <_> + <!-- tree 76 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 8 6 2 -1.</_> + <_>7 9 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0194594804197550</threshold> + <left_node>1</left_node> + <right_val>0.2311480939388275</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 12 4 6 -1.</_> + <_>7 12 2 3 2.</_> + <_>9 15 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0111608300358057</threshold> + <left_val>0.3087011873722076</left_val> + <right_val>0.5514662265777588</right_val></_></_> + <_> + <!-- tree 77 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 5 3 -1.</_> + <_>8 14 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0140561498701572</threshold> + <left_node>1</left_node> + <right_val>0.7005056142807007</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 14 2 2 -1.</_> + <_>13 14 1 1 2.</_> + <_>12 15 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2958350493572652e-004</threshold> + <left_val>0.5797485709190369</left_val> + <right_val>0.4691650867462158</right_val></_></_> + <_> + <!-- tree 78 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 13 6 3 -1.</_> + <_>7 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4636420682072639e-003</threshold> + <left_val>0.5928595066070557</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 13 5 2 -1.</_> + <_>7 14 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8881669247057289e-005</threshold> + <left_val>0.3741397857666016</left_val> + <right_val>0.5170168876647949</right_val></_></_> + <_> + <!-- tree 79 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 10 16 4 -1.</_> + <_>10 10 8 2 2.</_> + <_>2 12 8 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.6343429498374462e-003</threshold> + <left_val>0.5414987802505493</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 0 6 6 -1.</_> + <_>9 0 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0452634096145630</threshold> + <left_val>0.5180327296257019</left_val> + <right_val>0.1529684066772461</right_val></_></_> + <_> + <!-- tree 80 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 1 6 3 -1.</_> + <_>7 2 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.0646127462387085e-003</threshold> + <left_val>0.2515468001365662</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 12 6 2 -1.</_> + <_>0 13 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7389548853971064e-004</threshold> + <left_val>0.5121998786926270</left_val> + <right_val>0.3725948929786682</right_val></_></_> + <_> + <!-- tree 81 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 3 11 2 -1.</_> + <_>6 4 11 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4877359717502259e-005</threshold> + <left_node>1</left_node> + <right_val>0.5532435774803162</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 0 8 6 -1.</_> + <_>16 0 4 3 2.</_> + <_>12 3 4 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0243211593478918</threshold> + <left_val>0.4960766136646271</left_val> + <right_val>0.5983315110206604</right_val></_></_> + <_> + <!-- tree 82 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 1 2 -1.</_> + <_>8 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.9931396865285933e-005</threshold> + <left_val>0.4163953065872192</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 1 12 -1.</_> + <_>8 12 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6287760119885206e-003</threshold> + <left_val>0.5880144834518433</left_val> + <right_val>0.3399662971496582</right_val></_></_> + <_> + <!-- tree 83 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 11 2 2 -1.</_> + <_>12 11 1 1 2.</_> + <_>11 12 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8190539926290512e-003</threshold> + <left_node>1</left_node> + <right_val>0.7846621274948120</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 7 3 13 -1.</_> + <_>13 7 1 13 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0259891506284475</threshold> + <left_val>0.3288114070892334</left_val> + <right_val>0.5155087709426880</right_val></_></_> + <_> + <!-- tree 84 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 11 2 2 -1.</_> + <_>7 11 1 1 2.</_> + <_>8 12 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2062400346621871e-003</threshold> + <left_val>0.4596059918403626</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 13 1 3 -1.</_> + <_>3 14 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5557400183752179e-003</threshold> + <left_val>0.3126986920833588</left_val> + <right_val>0.7183399200439453</right_val></_></_> + <_> + <!-- tree 85 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 18 3 2 -1.</_> + <_>11 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2691930644214153e-003</threshold> + <left_node>1</left_node> + <right_val>0.5274006128311157</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 11 2 1 -1.</_> + <_>11 11 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3287249496206641e-004</threshold> + <left_val>0.4878666102886200</left_val> + <right_val>0.5615152716636658</right_val></_></_> + <_> + <!-- tree 86 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 10 5 9 -1.</_> + <_>1 13 5 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.5999699980020523e-003</threshold> + <left_node>1</left_node> + <right_val>0.5160812139511108</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 8 6 4 -1.</_> + <_>6 8 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0104961898177862</threshold> + <left_val>0.5701614022254944</left_val> + <right_val>0.3204850852489471</right_val></_></_> + <_> + <!-- tree 87 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 12 1 4 -1.</_> + <_>13 14 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4814930182183161e-005</threshold> + <left_val>0.5538837909698486</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 3 4 14 -1.</_> + <_>13 3 2 7 2.</_> + <_>11 10 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.4287078566849232e-004</threshold> + <left_val>0.5349429249763489</left_val> + <right_val>0.4472151100635529</right_val></_></_> + <_> + <!-- tree 88 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 12 1 4 -1.</_> + <_>6 14 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8891949730459601e-004</threshold> + <left_val>0.5012837052345276</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 3 4 14 -1.</_> + <_>5 3 2 7 2.</_> + <_>7 10 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.0413521975278854e-003</threshold> + <left_val>0.2562935948371887</left_val> + <right_val>0.4503383040428162</right_val></_></_> + <_> + <!-- tree 89 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 18 3 2 -1.</_> + <_>11 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.9534705728292465e-003</threshold> + <left_node>1</left_node> + <right_val>0.2630499899387360</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 3 3 -1.</_> + <_>9 13 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7908999472856522e-003</threshold> + <left_val>0.5756508708000183</left_val> + <right_val>0.4854863882064819</right_val></_></_> + <_> + <!-- tree 90 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 2 12 6 -1.</_> + <_>2 2 6 3 2.</_> + <_>8 5 6 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2857100013643503e-003</threshold> + <left_node>1</left_node> + <right_val>0.4084751904010773</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 6 6 2 -1.</_> + <_>9 6 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.7063008211553097e-004</threshold> + <left_val>0.4073356091976166</left_val> + <right_val>0.5920240879058838</right_val></_></_></trees> + <stage_threshold>44.6829681396484380</stage_threshold> + <parent>15</parent> + <next>-1</next></_> + <_> + <!-- stage 17 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 18 12 -1.</_> + <_>7 0 6 12 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0630219429731369</threshold> + <left_val>0.3419382870197296</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 7 6 4 -1.</_> + <_>5 7 3 2 2.</_> + <_>8 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8374609537422657e-003</threshold> + <left_val>0.6829563975334168</left_val> + <right_val>0.4404523074626923</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 10 4 -1.</_> + <_>5 9 10 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0464619509875774</threshold> + <left_val>0.4391745030879974</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 7 6 4 -1.</_> + <_>9 7 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0291525404900312</threshold> + <left_val>0.4601063132286072</left_val> + <right_val>0.6357936859130859</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 2 2 -1.</_> + <_>9 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4000290320836939e-005</threshold> + <left_node>1</left_node> + <right_val>0.3730010092258453</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 9 2 2 -1.</_> + <_>9 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2757079675793648e-003</threshold> + <left_val>0.3093824088573456</left_val> + <right_val>0.5901370048522949</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 17 8 3 -1.</_> + <_>6 18 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3596529606729746e-003</threshold> + <left_val>0.4337565004825592</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 17 6 2 -1.</_> + <_>12 17 3 1 2.</_> + <_>9 18 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7991929780691862e-004</threshold> + <left_val>0.4217503964900971</left_val> + <right_val>0.5846847891807556</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 12 2 2 -1.</_> + <_>4 13 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4166639630275313e-005</threshold> + <left_node>1</left_node> + <right_val>0.4084691107273102</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 12 9 2 -1.</_> + <_>3 13 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0252390539972112e-005</threshold> + <left_val>0.5087286829948425</left_val> + <right_val>0.7277184128761292</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 3 6 1 -1.</_> + <_>10 3 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.4320368692278862e-003</threshold> + <left_node>1</left_node> + <right_val>0.2967903017997742</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 3 4 6 -1.</_> + <_>11 3 2 3 2.</_> + <_>9 6 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6682319953106344e-004</threshold> + <left_val>0.4110462963581085</left_val> + <right_val>0.5581219792366028</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 6 5 -1.</_> + <_>3 3 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.7436279021203518e-003</threshold> + <left_val>0.4287309944629669</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 0 2 18 -1.</_> + <_>2 6 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2019240316003561e-003</threshold> + <left_val>0.4266195893287659</left_val> + <right_val>0.6444045901298523</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 2 4 9 -1.</_> + <_>14 5 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.7637941790744662e-004</threshold> + <left_node>1</left_node> + <right_val>0.4084824919700623</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 18 3 2 -1.</_> + <_>11 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.7901920732110739e-003</threshold> + <left_val>0.3181920945644379</left_val> + <right_val>0.5230693221092224</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 2 4 9 -1.</_> + <_>2 5 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.8914109356701374e-003</threshold> + <left_node>1</left_node> + <right_val>0.3548356890678406</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 18 3 2 -1.</_> + <_>8 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6459292061626911e-003</threshold> + <left_val>0.5610597729682922</left_val> + <right_val>0.2693848907947540</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 14 3 3 -1.</_> + <_>10 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.8799369037151337e-003</threshold> + <left_val>0.6235408186912537</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 12 2 6 -1.</_> + <_>10 15 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0181474704295397</threshold> + <left_val>0.2861981987953186</left_val> + <right_val>0.5226848125457764</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 5 3 6 -1.</_> + <_>7 7 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1409220314817503e-004</threshold> + <left_node>1</left_node> + <right_val>0.3257833123207092</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 3 6 2 -1.</_> + <_>3 4 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4334272863343358e-004</threshold> + <left_val>0.3882969021797180</left_val> + <right_val>0.5341166257858276</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 4 7 3 -1.</_> + <_>8 5 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7602489572018385e-003</threshold> + <left_val>0.6353965997695923</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 6 2 3 -1.</_> + <_>13 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9730569329112768e-003</threshold> + <left_val>0.5880761146545410</left_val> + <right_val>0.4593090116977692</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 8 2 12 -1.</_> + <_>8 12 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4565239436924458e-003</threshold> + <left_node>1</left_node> + <right_val>0.3134010136127472</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 8 14 -1.</_> + <_>5 4 4 7 2.</_> + <_>9 11 4 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9392010290175676e-004</threshold> + <left_val>0.5277131795883179</left_val> + <right_val>0.3604106903076172</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 1 20 8 -1.</_> + <_>10 1 10 4 2.</_> + <_>0 5 10 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0786430165171623</threshold> + <left_val>0.5290341973304749</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 0 12 2 -1.</_> + <_>4 1 12 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5276869572699070e-003</threshold> + <left_val>0.4654479920864105</left_val> + <right_val>0.6044905185699463</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 1 20 8 -1.</_> + <_>0 1 10 4 2.</_> + <_>10 5 10 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0787167996168137</threshold> + <left_val>0.2541126906871796</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 0 12 2 -1.</_> + <_>4 1 12 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.7298499159514904e-003</threshold> + <left_val>0.4366919100284576</left_val> + <right_val>0.5822886228561401</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 6 3 -1.</_> + <_>9 5 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.2386557692661881e-004</threshold> + <left_node>1</left_node> + <right_val>0.5472692251205444</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 10 6 -1.</_> + <_>8 15 10 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0852672308683395</threshold> + <left_val>0.1461607962846756</left_val> + <right_val>0.5181810855865479</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 6 3 -1.</_> + <_>8 5 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0409811101853848</threshold> + <left_node>1</left_node> + <right_val>0.1270135045051575</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 3 6 1 -1.</_> + <_>8 3 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.7135749161243439e-003</threshold> + <left_val>0.4832684993743897</left_val> + <right_val>0.2223578989505768</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 18 9 2 -1.</_> + <_>14 18 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.8663940764963627e-003</threshold> + <left_val>0.5918928980827332</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 11 6 7 -1.</_> + <_>13 11 3 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0145596396178007</threshold> + <left_val>0.4761506915092468</left_val> + <right_val>0.5727223753929138</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 6 12 10 -1.</_> + <_>4 6 6 5 2.</_> + <_>10 11 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0100643103942275</threshold> + <left_val>0.3636730909347534</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 17 3 3 -1.</_> + <_>9 17 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6274080630391836e-003</threshold> + <left_val>0.5271731019020081</left_val> + <right_val>0.2740525007247925</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 18 9 2 -1.</_> + <_>14 18 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3421540390700102e-003</threshold> + <left_val>0.5497784018516541</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 11 6 8 -1.</_> + <_>13 11 3 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0246864091604948</threshold> + <left_val>0.6059895157814026</left_val> + <right_val>0.4960314035415649</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 16 2 2 -1.</_> + <_>4 17 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9456120207905769e-004</threshold> + <left_node>1</left_node> + <right_val>0.3769465088844299</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 15 4 4 -1.</_> + <_>7 17 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.1714211218059063e-004</threshold> + <left_val>0.4062362015247345</left_val> + <right_val>0.5668215155601502</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 4 3 3 -1.</_> + <_>12 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0793990697711706e-003</threshold> + <left_val>0.4618656933307648</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 6 2 3 -1.</_> + <_>13 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7982709687203169e-003</threshold> + <left_val>0.4867505133152008</left_val> + <right_val>0.6518449783325195</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 11 6 1 -1.</_> + <_>7 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2287059982772917e-004</threshold> + <left_val>0.5677595734596252</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 10 3 1 -1.</_> + <_>8 10 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2623921288177371e-004</threshold> + <left_val>0.3710733950138092</left_val> + <right_val>0.5676605105400085</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 12 20 4 -1.</_> + <_>0 14 20 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0667926818132401</threshold> + <left_val>0.2511521875858307</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 2 3 2 -1.</_> + <_>10 3 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.4869889710098505e-003</threshold> + <left_val>0.3886750936508179</left_val> + <right_val>0.5262253880500794</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 4 3 3 -1.</_> + <_>5 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.0454870797693729e-003</threshold> + <left_val>0.6557472944259644</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 4 3 -1.</_> + <_>5 6 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.8297587782144547e-003</threshold> + <left_val>0.5934106111526489</left_val> + <right_val>0.4285922050476074</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 8 4 3 -1.</_> + <_>8 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0722599690780044e-003</threshold> + <left_node>1</left_node> + <right_val>0.5426058769226074</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 4 2 12 -1.</_> + <_>10 8 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7901195511221886e-003</threshold> + <left_val>0.5351303219795227</left_val> + <right_val>0.4834277927875519</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 4 3 -1.</_> + <_>0 4 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.1750381030142307e-003</threshold> + <left_val>0.2067168951034546</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 3 2 3 -1.</_> + <_>1 4 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1251230025663972e-003</threshold> + <left_val>0.5112252235412598</left_val> + <right_val>0.3468714058399200</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 1 4 11 -1.</_> + <_>16 1 2 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0106347100809217</threshold> + <left_val>0.4479008018970490</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>18 2 2 16 -1.</_> + <_>19 2 1 8 2.</_> + <_>18 10 1 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0117632197216153</threshold> + <left_val>0.6253901720046997</left_val> + <right_val>0.4968987107276917</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 8 6 12 -1.</_> + <_>3 8 2 12 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0923240631818771</threshold> + <left_node>1</left_node> + <right_val>0.2031303942203522</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 2 6 2 -1.</_> + <_>7 2 3 1 2.</_> + <_>10 3 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8991080578416586e-003</threshold> + <left_val>0.5618721842765808</left_val> + <right_val>0.4046572148799896</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 4 8 2 -1.</_> + <_>16 4 4 1 2.</_> + <_>12 5 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0105103403329849</threshold> + <left_node>1</left_node> + <right_val>0.4943264126777649</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 6 6 2 -1.</_> + <_>12 6 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.4531312566250563e-004</threshold> + <left_val>0.5613427758216858</left_val> + <right_val>0.3845331966876984</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 8 2 -1.</_> + <_>0 4 4 1 2.</_> + <_>4 5 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0041000619530678e-003</threshold> + <left_node>1</left_node> + <right_val>0.7759842276573181</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 3 3 5 -1.</_> + <_>2 3 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8110528625547886e-003</threshold> + <left_val>0.4624733030796051</left_val> + <right_val>0.6286277174949646</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 3 4 6 -1.</_> + <_>16 5 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0279185809195042</threshold> + <left_val>0.2409314066171646</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 6 4 3 -1.</_> + <_>8 7 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1739399526268244e-003</threshold> + <left_val>0.5345504879951477</left_val> + <right_val>0.3507958054542542</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 1 3 -1.</_> + <_>8 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.0639587678015232e-003</threshold> + <left_val>0.6647101044654846</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 11 1 2 -1.</_> + <_>4 12 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0017139185220003e-004</threshold> + <left_val>0.4998509883880615</left_val> + <right_val>0.3022165000438690</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 6 3 -1.</_> + <_>8 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9214770291000605e-003</threshold> + <left_node>1</left_node> + <right_val>0.5919150710105896</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 15 7 3 -1.</_> + <_>7 16 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0138608301058412</threshold> + <left_val>0.6351767778396606</left_val> + <right_val>0.4993310868740082</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 12 2 8 -1.</_> + <_>9 16 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0230068508535624</threshold> + <left_node>1</left_node> + <right_val>0.1902336031198502</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 6 6 2 -1.</_> + <_>6 6 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3857929734513164e-003</threshold> + <left_val>0.5253369212150574</left_val> + <right_val>0.3985860049724579</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 7 4 2 -1.</_> + <_>12 8 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2637410545721650e-003</threshold> + <left_val>0.4666104018688202</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 3 13 10 -1.</_> + <_>5 8 13 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0146752102300525</threshold> + <left_val>0.3823164999485016</left_val> + <right_val>0.5326632857322693</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 7 4 2 -1.</_> + <_>4 8 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9535070061683655e-003</threshold> + <left_val>0.7063655853271484</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 8 16 2 -1.</_> + <_>0 8 8 1 2.</_> + <_>8 9 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.7189770005643368e-003</threshold> + <left_val>0.3813462853431702</left_val> + <right_val>0.5246735215187073</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 8 2 5 -1.</_> + <_>11 8 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2484089499339461e-004</threshold> + <left_node>1</left_node> + <right_val>0.4791638851165772</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 0 6 13 -1.</_> + <_>10 0 3 13 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5248658433556557e-004</threshold> + <left_val>0.4491218030452728</left_val> + <right_val>0.5370901226997376</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 6 4 2 -1.</_> + <_>1 7 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.9034568518400192e-003</threshold> + <left_node>1</left_node> + <right_val>0.2076473981142044</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 3 2 1 -1.</_> + <_>5 3 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4895649655954912e-005</threshold> + <left_val>0.4447635114192963</left_val> + <right_val>0.5667163133621216</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 8 2 5 -1.</_> + <_>11 8 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.7091601300053298e-004</threshold> + <left_val>0.5465071201324463</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 10 4 8 -1.</_> + <_>12 10 2 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3084810022264719e-004</threshold> + <left_val>0.5493261814117432</left_val> + <right_val>0.4580708146095276</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 8 2 5 -1.</_> + <_>8 8 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.3893961487337947e-004</threshold> + <left_val>0.5501571893692017</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 10 4 8 -1.</_> + <_>6 10 2 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.3733746830839664e-005</threshold> + <left_val>0.5085790753364563</left_val> + <right_val>0.3305698037147522</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 7 9 12 -1.</_> + <_>9 7 3 12 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.8991485536098480e-003</threshold> + <left_val>0.4276469051837921</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 13 2 3 -1.</_> + <_>11 13 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0102533502504230</threshold> + <left_val>0.1123218014836311</left_val> + <right_val>0.5152723193168640</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 10 6 10 -1.</_> + <_>10 10 3 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0596374906599522</threshold> + <left_val>0.7386772036552429</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 11 4 8 -1.</_> + <_>8 11 2 4 2.</_> + <_>10 15 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0217071995139122</threshold> + <left_val>0.4996291995048523</left_val> + <right_val>0.1339413970708847</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 1 4 11 -1.</_> + <_>16 1 2 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.9107045680284500e-003</threshold> + <left_val>0.4679012000560761</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>18 2 2 4 -1.</_> + <_>18 2 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0109983002766967</threshold> + <left_val>0.6928656101226807</left_val> + <right_val>0.5012068152427673</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 6 6 2 -1.</_> + <_>5 6 3 1 2.</_> + <_>8 7 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.4608891736716032e-004</threshold> + <left_node>1</left_node> + <right_val>0.5833582282066345</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 1 3 -1.</_> + <_>5 5 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9539171373471618e-004</threshold> + <left_val>0.3826391100883484</left_val> + <right_val>0.5566350817680359</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 1 4 14 -1.</_> + <_>11 1 2 14 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0500541292130947</threshold> + <left_node>1</left_node> + <right_val>0.3002721071243286</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 2 12 3 -1.</_> + <_>8 2 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.2330660186707973e-003</threshold> + <left_val>0.5908042788505554</left_val> + <right_val>0.5000870823860169</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 1 4 14 -1.</_> + <_>7 1 2 14 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6863380335271358e-003</threshold> + <left_val>0.3975034952163696</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 3 6 2 -1.</_> + <_>9 3 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0195849463343620e-003</threshold> + <left_val>0.3697685897350311</left_val> + <right_val>0.5756192803382874</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 0 18 4 -1.</_> + <_>8 0 6 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0202049203217030</threshold> + <left_val>0.6375268101692200</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 5 2 10 -1.</_> + <_>9 10 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1340379025787115e-003</threshold> + <left_val>0.5363265872001648</left_val> + <right_val>0.4433170855045319</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 3 4 -1.</_> + <_>9 6 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8348889425396919e-003</threshold> + <left_val>0.5828999280929565</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 9 11 -1.</_> + <_>8 5 3 11 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.9489468112587929e-003</threshold> + <left_val>0.2680670917034149</left_val> + <right_val>0.4642885923385620</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 6 3 5 -1.</_> + <_>11 6 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3030120064504445e-004</threshold> + <left_val>0.5475320219993591</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 9 6 5 -1.</_> + <_>8 9 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.0581009127199650e-003</threshold> + <left_val>0.5320833921432495</left_val> + <right_val>0.4646492898464203</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 6 3 5 -1.</_> + <_>8 6 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.1950011402368546e-004</threshold> + <left_val>0.5232744812965393</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 10 6 3 -1.</_> + <_>9 10 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.8620947422459722e-004</threshold> + <left_val>0.4935086071491242</left_val> + <right_val>0.3103117942810059</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 0 3 7 -1.</_> + <_>11 0 1 7 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.4936267919838428e-003</threshold> + <left_val>0.2883046865463257</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 3 20 12 -1.</_> + <_>0 9 20 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0156829301267862</threshold> + <left_val>0.3640313148498535</left_val> + <right_val>0.5368754863739014</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 2 -1.</_> + <_>10 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.2649750355631113e-003</threshold> + <left_val>0.6468631029129028</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 9 4 1 -1.</_> + <_>7 9 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8463930832222104e-004</threshold> + <left_val>0.5259659886360169</left_val> + <right_val>0.3831427991390228</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 13 3 2 -1.</_> + <_>13 14 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4492390006780624e-003</threshold> + <left_node>1</left_node> + <right_val>0.2086818963289261</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 9 4 6 -1.</_> + <_>16 9 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0231183208525181</threshold> + <left_val>0.4978533089160919</left_val> + <right_val>0.5961257219314575</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 15 6 3 -1.</_> + <_>7 16 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0835159812122583e-003</threshold> + <left_node>1</left_node> + <right_val>0.5746421813964844</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 16 7 3 -1.</_> + <_>6 17 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1513150529935956e-003</threshold> + <left_val>0.3586845099925995</left_val> + <right_val>0.5363473892211914</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 14 9 6 -1.</_> + <_>11 16 9 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0361047089099884</threshold> + <left_node>1</left_node> + <right_val>0.2833136916160584</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>19 14 1 3 -1.</_> + <_>19 15 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6256198654882610e-004</threshold> + <left_val>0.5477722287178040</left_val> + <right_val>0.4110532104969025</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 9 6 6 -1.</_> + <_>3 9 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.4635469783097506e-003</threshold> + <left_val>0.5990386009216309</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 19 9 1 -1.</_> + <_>3 19 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8796829283237457e-003</threshold> + <left_val>0.5725253224372864</left_val> + <right_val>0.4149512052536011</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 14 9 6 -1.</_> + <_>11 16 9 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.1119500100612640e-003</threshold> + <left_node>1</left_node> + <right_val>0.5396351814270020</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 12 6 6 -1.</_> + <_>12 14 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5932079665362835e-003</threshold> + <left_val>0.5379704236984253</left_val> + <right_val>0.3891302943229675</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 14 8 6 -1.</_> + <_>1 16 8 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.0014740340411663e-003</threshold> + <left_node>1</left_node> + <right_val>0.3714671134948731</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 1 3 2 -1.</_> + <_>9 1 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.0169539432972670e-004</threshold> + <left_val>0.5529567003250122</left_val> + <right_val>0.3755804896354675</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 2 2 4 -1.</_> + <_>18 2 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.6652329191565514e-003</threshold> + <left_node>1</left_node> + <right_val>0.5025773048400879</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 0 6 3 -1.</_> + <_>16 0 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7315050829201937e-003</threshold> + <left_val>0.5850322246551514</left_val> + <right_val>0.4617573916912079</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 2 4 -1.</_> + <_>1 2 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3301590224727988e-003</threshold> + <left_node>1</left_node> + <right_val>0.5937700867652893</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 6 3 -1.</_> + <_>2 0 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2648240923881531e-003</threshold> + <left_val>0.5645368099212647</left_val> + <right_val>0.3937624990940094</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 0 3 2 -1.</_> + <_>10 0 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.3251499086618423e-003</threshold> + <left_val>0.5182105898857117</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 1 2 2 -1.</_> + <_>12 1 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.0753740575164557e-003</threshold> + <left_val>0.3007416129112244</left_val> + <right_val>0.5196403861045837</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 0 3 2 -1.</_> + <_>9 0 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.3622138006612659e-004</threshold> + <left_val>0.3697580099105835</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 1 2 2 -1.</_> + <_>7 1 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0082479497650638e-005</threshold> + <left_val>0.4327593147754669</left_val> + <right_val>0.5715808868408203</right_val></_></_> + <_> + <!-- tree 63 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 8 2 3 -1.</_> + <_>10 9 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.8722730241715908e-003</threshold> + <left_val>0.3473713099956513</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 15 6 2 -1.</_> + <_>13 16 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.2879058532416821e-004</threshold> + <left_val>0.5438259243965149</left_val> + <right_val>0.4453906118869782</right_val></_></_> + <_> + <!-- tree 64 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 2 2 -1.</_> + <_>8 12 1 1 2.</_> + <_>9 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3411579420790076e-003</threshold> + <left_node>1</left_node> + <right_val>0.6511713862419128</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 15 3 5 -1.</_> + <_>9 15 1 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.3681922405958176e-003</threshold> + <left_val>0.1443295031785965</left_val> + <right_val>0.4888199865818024</right_val></_></_> + <_> + <!-- tree 65 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 6 4 12 -1.</_> + <_>8 12 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.3305751215666533e-004</threshold> + <left_node>1</left_node> + <right_val>0.3951109051704407</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 6 7 8 -1.</_> + <_>7 10 7 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0746510233730078e-003</threshold> + <left_val>0.3910265862941742</left_val> + <right_val>0.5349503755569458</right_val></_></_> + <_> + <!-- tree 66 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 11 8 2 -1.</_> + <_>0 12 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0186100509017706</threshold> + <left_val>0.1275743991136551</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 11 2 2 -1.</_> + <_>8 11 1 1 2.</_> + <_>9 12 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3651419430971146e-003</threshold> + <left_val>0.5038288831710815</left_val> + <right_val>0.6951304078102112</right_val></_></_> + <_> + <!-- tree 67 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 12 1 -1.</_> + <_>11 7 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.3744421824812889e-003</threshold> + <left_val>0.5253443121910095</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 8 3 2 -1.</_> + <_>11 8 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.4163323044776917e-003</threshold> + <left_val>0.5011243820190430</left_val> + <right_val>0.7311332821846008</right_val></_></_> + <_> + <!-- tree 68 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 7 12 1 -1.</_> + <_>5 7 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.1413988694548607e-003</threshold> + <left_val>0.4953536093235016</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 5 8 2 -1.</_> + <_>6 5 4 1 2.</_> + <_>10 6 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5847031287848949e-003</threshold> + <left_val>0.2535555958747864</left_val> + <right_val>0.6462442874908447</right_val></_></_> + <_> + <!-- tree 69 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 10 3 10 -1.</_> + <_>10 10 1 10 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0285652391612530</threshold> + <left_node>1</left_node> + <right_val>0.2330722063779831</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 0 2 4 -1.</_> + <_>16 0 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.3958800961263478e-004</threshold> + <left_val>0.4702244102954865</left_val> + <right_val>0.5544549226760864</right_val></_></_> + <_> + <!-- tree 70 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 10 3 10 -1.</_> + <_>9 10 1 10 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0314594581723213</threshold> + <left_node>1</left_node> + <right_val>0.0336896888911724</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 10 2 3 -1.</_> + <_>9 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.6011630222201347e-003</threshold> + <left_val>0.4787121117115021</left_val> + <right_val>0.6338351964950562</right_val></_></_> + <_> + <!-- tree 71 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 9 4 2 -1.</_> + <_>10 9 2 1 2.</_> + <_>8 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.1835669223219156e-004</threshold> + <left_val>0.5431486964225769</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 14 7 6 -1.</_> + <_>12 16 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.5303089320659637e-003</threshold> + <left_val>0.4105832874774933</left_val> + <right_val>0.5403990745544434</right_val></_></_> + <_> + <!-- tree 72 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 1 3 1 -1.</_> + <_>7 1 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4129279879853129e-003</threshold> + <left_node>1</left_node> + <right_val>0.3105539977550507</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 0 2 4 -1.</_> + <_>3 0 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.5530709535814822e-004</threshold> + <left_val>0.4254471957683563</left_val> + <right_val>0.5447154045104981</right_val></_></_> + <_> + <!-- tree 73 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 11 2 2 -1.</_> + <_>12 11 1 1 2.</_> + <_>11 12 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.1966410460881889e-004</threshold> + <left_node>1</left_node> + <right_val>0.6118361949920654</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 12 6 6 -1.</_> + <_>12 14 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.0411392003297806e-003</threshold> + <left_val>0.5290042161941528</left_val> + <right_val>0.4224787056446075</right_val></_></_> + <_> + <!-- tree 74 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 0 6 10 -1.</_> + <_>1 0 3 5 2.</_> + <_>4 5 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.7617880888283253e-003</threshold> + <left_val>0.4315345883369446</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 0 2 9 -1.</_> + <_>3 3 2 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9374631121754646e-003</threshold> + <left_val>0.6629263162612915</left_val> + <right_val>0.3028964996337891</right_val></_></_> + <_> + <!-- tree 75 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 13 3 2 -1.</_> + <_>14 14 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6497720498591661e-003</threshold> + <left_node>1</left_node> + <right_val>0.5491852760314941</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 2 3 2 -1.</_> + <_>15 3 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.8834417723119259e-003</threshold> + <left_val>0.3188554048538208</left_val> + <right_val>0.5184289216995239</right_val></_></_> + <_> + <!-- tree 76 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 13 5 2 -1.</_> + <_>2 14 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7459187489002943e-004</threshold> + <left_node>1</left_node> + <right_val>0.3328830897808075</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 4 12 10 -1.</_> + <_>3 4 6 5 2.</_> + <_>9 9 6 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0153087796643376</threshold> + <left_val>0.3923608064651489</left_val> + <right_val>0.5235139131546021</right_val></_></_> + <_> + <!-- tree 77 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 1 14 6 -1.</_> + <_>5 3 14 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0322924517095089</threshold> + <left_node>1</left_node> + <right_val>0.5977646708488464</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 3 3 2 -1.</_> + <_>15 4 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.3842519517056644e-004</threshold> + <left_val>0.4541687965393066</left_val> + <right_val>0.5369428992271423</right_val></_></_> + <_> + <!-- tree 78 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 11 2 2 -1.</_> + <_>7 11 1 1 2.</_> + <_>8 12 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5429529594257474e-003</threshold> + <left_node>1</left_node> + <right_val>0.6318141222000122</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 14 6 6 -1.</_> + <_>2 16 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4733028840273619e-003</threshold> + <left_val>0.3490633070468903</left_val> + <right_val>0.4759024977684021</right_val></_></_> + <_> + <!-- tree 79 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 13 8 3 -1.</_> + <_>6 14 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0994939841330051e-003</threshold> + <left_node>1</left_node> + <right_val>0.5887197852134705</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 19 18 1 -1.</_> + <_>7 19 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.7541108690202236e-003</threshold> + <left_val>0.5961331725120544</left_val> + <right_val>0.4841983020305634</right_val></_></_> + <_> + <!-- tree 80 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 1 6 -1.</_> + <_>8 15 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0102331303060055</threshold> + <left_val>0.1705404072999954</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 14 15 -1.</_> + <_>0 5 14 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.2255450934171677</threshold> + <left_val>0.4779379963874817</left_val> + <right_val>0.0978796631097794</right_val></_></_> + <_> + <!-- tree 81 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 0 16 8 -1.</_> + <_>3 4 16 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0296665597707033</threshold> + <left_node>1</left_node> + <right_val>0.5822224020957947</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 1 8 12 -1.</_> + <_>6 7 8 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8518449980765581e-003</threshold> + <left_val>0.5459626913070679</left_val> + <right_val>0.4610066115856171</right_val></_></_> + <_> + <!-- tree 82 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 3 3 3 -1.</_> + <_>6 3 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.7465328872203827e-004</threshold> + <left_node>1</left_node> + <right_val>0.3670322895050049</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 1 3 4 -1.</_> + <_>6 1 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4044740055396687e-005</threshold> + <left_val>0.4302386045455933</left_val> + <right_val>0.5691710710525513</right_val></_></_> + <_> + <!-- tree 83 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 14 4 6 -1.</_> + <_>17 14 2 3 2.</_> + <_>15 17 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0175794307142496</threshold> + <left_val>0.6917321085929871</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 11 6 8 -1.</_> + <_>15 11 3 4 2.</_> + <_>12 15 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0523816794157028</threshold> + <left_val>0.7110040187835693</left_val> + <right_val>0.5060154795646668</right_val></_></_> + <_> + <!-- tree 84 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 2 4 -1.</_> + <_>9 7 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0112421102821827</threshold> + <left_val>0.8769189119338989</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 11 3 1 -1.</_> + <_>7 11 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6728400737047195e-003</threshold> + <left_val>0.6519191861152649</left_val> + <right_val>0.4546068906784058</right_val></_></_> + <_> + <!-- tree 85 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 3 2 14 -1.</_> + <_>12 3 1 14 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5082760732620955e-003</threshold> + <left_val>0.5329865813255310</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 11 6 2 -1.</_> + <_>15 11 3 1 2.</_> + <_>12 12 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.1679710634052753e-003</threshold> + <left_val>0.5220459103584290</left_val> + <right_val>0.2953518927097321</right_val></_></_> + <_> + <!-- tree 86 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 5 2 -1.</_> + <_>0 3 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.7009900491684675e-004</threshold> + <left_node>1</left_node> + <right_val>0.5048633217811585</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 0 15 1 -1.</_> + <_>5 0 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0109570100903511</threshold> + <left_val>0.5837358236312866</left_val> + <right_val>0.3020085990428925</right_val></_></_> + <_> + <!-- tree 87 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 11 6 2 -1.</_> + <_>15 11 3 1 2.</_> + <_>12 12 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.3272513002157211e-003</threshold> + <left_val>0.3158063888549805</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 5 2 2 -1.</_> + <_>10 5 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9798380637657829e-005</threshold> + <left_val>0.4386389851570129</left_val> + <right_val>0.5443211197853088</right_val></_></_> + <_> + <!-- tree 88 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 2 -1.</_> + <_>10 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8244039276614785e-004</threshold> + <left_node>1</left_node> + <right_val>0.5625395774841309</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 0 2 10 -1.</_> + <_>9 0 1 5 2.</_> + <_>10 5 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.1364117795601487e-004</threshold> + <left_val>0.5281198024749756</left_val> + <right_val>0.3401407897472382</right_val></_></_> + <_> + <!-- tree 89 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 14 2 2 -1.</_> + <_>18 15 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8008040497079492e-003</threshold> + <left_node>1</left_node> + <right_val>0.3471659123897553</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 11 4 9 -1.</_> + <_>13 14 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.9944779388606548e-003</threshold> + <left_val>0.4481697082519531</left_val> + <right_val>0.5385770201683044</right_val></_></_> + <_> + <!-- tree 90 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 13 2 2 -1.</_> + <_>8 13 1 1 2.</_> + <_>9 14 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.5625398342963308e-005</threshold> + <left_val>0.4492512941360474</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 8 4 3 -1.</_> + <_>7 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.3189922841265798e-004</threshold> + <left_val>0.4167312085628510</left_val> + <right_val>0.6021102070808411</right_val></_></_> + <_> + <!-- tree 91 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 9 4 2 -1.</_> + <_>8 10 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9980219551362097e-004</threshold> + <left_val>0.4148428142070770</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 12 4 2 -1.</_> + <_>13 13 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9060940505587496e-005</threshold> + <left_val>0.5592089891433716</left_val> + <right_val>0.4073210954666138</right_val></_></_> + <_> + <!-- tree 92 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 14 2 2 -1.</_> + <_>6 14 1 1 2.</_> + <_>7 15 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.9742690064013004e-004</threshold> + <left_val>0.6088914275169373</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 14 2 2 -1.</_> + <_>0 15 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4831830048933625e-004</threshold> + <left_val>0.5298305153846741</left_val> + <right_val>0.3761950135231018</right_val></_></_> + <_> + <!-- tree 93 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 13 6 3 -1.</_> + <_>7 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9441029764711857e-003</threshold> + <left_node>1</left_node> + <right_val>0.4716084897518158</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 9 10 6 -1.</_> + <_>7 11 10 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1374121010303497</threshold> + <left_val>0.5101336836814880</left_val> + <right_val>0.0467468015849590</right_val></_></_> + <_> + <!-- tree 94 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 9 12 4 -1.</_> + <_>6 9 4 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0884141772985458</threshold> + <left_val>0.1181868985295296</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 9 6 11 -1.</_> + <_>10 9 3 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0706102773547173</threshold> + <left_val>0.5119063258171082</left_val> + <right_val>0.7778441905975342</right_val></_></_> + <_> + <!-- tree 95 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 3 -1.</_> + <_>9 8 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.7188978902995586e-003</threshold> + <left_val>0.1874134987592697</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 4 3 -1.</_> + <_>9 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0151153998449445</threshold> + <left_val>0.4980027973651886</left_val> + <right_val>0.7005817890167236</right_val></_></_> + <_> + <!-- tree 96 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 3 3 17 -1.</_> + <_>3 3 1 17 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0671879863366485e-003</threshold> + <left_val>0.4482238888740540</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 11 6 3 -1.</_> + <_>0 12 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.0487911580130458e-004</threshold> + <left_val>0.6265752911567688</left_val> + <right_val>0.4402655065059662</right_val></_></_></trees> + <stage_threshold>47.7634506225585940</stage_threshold> + <parent>16</parent> + <next>-1</next></_> + <_> + <!-- stage 18 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 3 11 9 -1.</_> + <_>4 6 11 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0986907333135605</threshold> + <left_node>1</left_node> + <right_val>0.3999474942684174</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 6 11 -1.</_> + <_>3 2 3 11 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0623734183609486</threshold> + <left_val>0.5247784852981567</left_val> + <right_val>0.8193575739860535</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 0 4 5 -1.</_> + <_>13 0 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.9496519817039371e-003</threshold> + <left_val>0.3529816865921021</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 6 4 -1.</_> + <_>12 7 3 2 2.</_> + <_>9 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.9139147894456983e-004</threshold> + <left_val>0.5852727890014648</left_val> + <right_val>0.3245978057384491</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 8 2 -1.</_> + <_>9 7 4 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.5150408297777176e-004</threshold> + <left_val>0.3892816901206970</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 8 15 1 -1.</_> + <_>6 8 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1721949558705091e-003</threshold> + <left_val>0.4335052073001862</left_val> + <right_val>0.6520624160766602</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 12 12 2 -1.</_> + <_>8 12 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.4480642797425389e-004</threshold> + <left_node>1</left_node> + <right_val>0.4041135013103485</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 0 4 10 -1.</_> + <_>15 0 2 5 2.</_> + <_>13 5 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6264840271323919e-003</threshold> + <left_val>0.5624982118606567</left_val> + <right_val>0.3967525064945221</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 9 2 2 -1.</_> + <_>9 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9712688885629177e-004</threshold> + <left_val>0.3856112062931061</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 9 6 2 -1.</_> + <_>6 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5984949208796024e-003</threshold> + <left_val>0.5997889041900635</left_val> + <right_val>0.4241614043712616</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 17 4 3 -1.</_> + <_>8 18 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3080618381500244e-003</threshold> + <left_node>1</left_node> + <right_val>0.6660168766975403</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 3 9 2 -1.</_> + <_>11 3 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.6319877775385976e-004</threshold> + <left_val>0.4481379091739655</left_val> + <right_val>0.5583487749099731</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 3 9 2 -1.</_> + <_>6 3 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.0776469288393855e-004</threshold> + <left_val>0.3535459041595459</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 0 9 14 -1.</_> + <_>8 0 3 14 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.6223160568624735e-003</threshold> + <left_val>0.3409807085990906</left_val> + <right_val>0.5420687794685364</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 3 7 10 -1.</_> + <_>7 8 7 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0620614103972912</threshold> + <left_val>0.1934083998203278</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 8 13 3 -1.</_> + <_>4 9 13 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.4387189922854304e-004</threshold> + <left_val>0.4083626866340637</left_val> + <right_val>0.5490221977233887</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 12 14 4 -1.</_> + <_>3 12 7 2 2.</_> + <_>10 14 7 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0262399092316628</threshold> + <left_node>1</left_node> + <right_val>0.2285708039999008</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 12 4 2 -1.</_> + <_>8 13 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1940297968685627e-004</threshold> + <left_val>0.4648667871952057</left_val> + <right_val>0.6017355918884277</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 10 9 8 -1.</_> + <_>6 14 9 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3833119485061616e-004</threshold> + <left_node>1</left_node> + <right_val>0.3598038852214813</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 12 2 8 -1.</_> + <_>9 16 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5869759954512119e-003</threshold> + <left_val>0.4259651005268097</left_val> + <right_val>0.5476434826850891</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 3 3 -1.</_> + <_>8 13 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.7263417877256870e-003</threshold> + <left_val>0.6507238149642944</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 4 10 -1.</_> + <_>7 5 2 10 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0110061103478074</threshold> + <left_val>0.5149409770965576</left_val> + <right_val>0.3362984955310822</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 15 3 3 -1.</_> + <_>14 16 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.1445819921791553e-003</threshold> + <left_node>1</left_node> + <right_val>0.2672930061817169</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 6 13 3 -1.</_> + <_>4 7 13 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.7233798541128635e-003</threshold> + <left_val>0.5652182102203369</left_val> + <right_val>0.4298144876956940</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 15 3 3 -1.</_> + <_>3 16 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.8437406122684479e-003</threshold> + <left_node>1</left_node> + <right_val>0.1151885986328125</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 9 4 2 -1.</_> + <_>3 9 2 1 2.</_> + <_>5 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5124640412977897e-005</threshold> + <left_val>0.4373598098754883</left_val> + <right_val>0.5612128973007202</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 11 20 4 -1.</_> + <_>10 11 10 2 2.</_> + <_>0 13 10 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0399088710546494</threshold> + <left_val>0.5204648971557617</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 15 4 3 -1.</_> + <_>8 16 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3903679363429546e-003</threshold> + <left_val>0.4813467860221863</left_val> + <right_val>0.6361209154129028</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 11 20 4 -1.</_> + <_>0 11 10 2 2.</_> + <_>10 13 10 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0399088710546494</threshold> + <left_val>0.1506870985031128</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 15 4 3 -1.</_> + <_>8 16 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3903679363429546e-003</threshold> + <left_val>0.4581694900989533</left_val> + <right_val>0.6200240850448608</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 13 1 6 -1.</_> + <_>10 16 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7005190066993237e-003</threshold> + <left_node>1</left_node> + <right_val>0.3432235121726990</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 1 18 2 -1.</_> + <_>11 1 9 1 2.</_> + <_>2 2 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0126237897202373</threshold> + <left_val>0.3088226914405823</left_val> + <right_val>0.5226737856864929</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 14 3 3 -1.</_> + <_>8 15 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0118066100403667</threshold> + <left_node>1</left_node> + <right_val>0.7187939286231995</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 1 6 1 -1.</_> + <_>6 1 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.4257229417562485e-003</threshold> + <left_val>0.3120814859867096</left_val> + <right_val>0.5065844058990479</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 13 1 3 -1.</_> + <_>11 14 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.9385299896821380e-004</threshold> + <left_val>0.4754584133625031</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 5 2 12 -1.</_> + <_>13 11 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0343881882727146</threshold> + <left_val>0.5261657834053040</left_val> + <right_val>0.3350174129009247</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 14 18 6 -1.</_> + <_>1 16 18 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0750099867582321</threshold> + <left_val>0.1713480949401856</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 1 3 -1.</_> + <_>8 14 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.9022492021322250e-004</threshold> + <left_val>0.4725801944732666</left_val> + <right_val>0.5956469178199768</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 13 6 3 -1.</_> + <_>7 14 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.5525289177894592e-003</threshold> + <left_val>0.6558222770690918</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 10 3 2 -1.</_> + <_>9 11 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3135520566720515e-004</threshold> + <left_val>0.4835400879383087</left_val> + <right_val>0.5586913824081421</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 1 3 3 -1.</_> + <_>6 1 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.7948658466339111e-003</threshold> + <left_node>1</left_node> + <right_val>0.2645705938339233</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 6 5 -1.</_> + <_>8 5 3 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0124691072851419e-003</threshold> + <left_val>0.3657945096492767</left_val> + <right_val>0.5124772191047669</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 5 6 14 -1.</_> + <_>7 12 6 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1178547963500023</threshold> + <left_val>0.2385654002428055</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 16 6 2 -1.</_> + <_>9 16 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5575019642710686e-003</threshold> + <left_val>0.5490474104881287</left_val> + <right_val>0.4274747967720032</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 2 12 -1.</_> + <_>1 2 1 12 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0155737595632672</threshold> + <left_val>0.6938900947570801</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 0 5 3 -1.</_> + <_>1 1 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1854790393263102e-003</threshold> + <left_val>0.3645988106727600</left_val> + <right_val>0.5092526078224182</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 4 3 3 -1.</_> + <_>12 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9272339306771755e-003</threshold> + <left_val>0.4685808122158051</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 6 3 3 -1.</_> + <_>12 7 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.4663668163120747e-003</threshold> + <left_val>0.4973410069942474</left_val> + <right_val>0.7726097106933594</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 4 3 3 -1.</_> + <_>5 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.6140360906720161e-003</threshold> + <left_val>0.6877465844154358</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 6 3 3 -1.</_> + <_>5 7 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1512572206556797e-003</threshold> + <left_val>0.4788525104522705</left_val> + <right_val>0.6921657919883728</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 4 8 -1.</_> + <_>10 12 2 4 2.</_> + <_>8 16 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7711640577763319e-003</threshold> + <left_val>0.5481839776039124</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 17 18 2 -1.</_> + <_>11 17 9 1 2.</_> + <_>2 18 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0128361098468304</threshold> + <left_val>0.3800162971019745</left_val> + <right_val>0.5204492807388306</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 3 2 2 -1.</_> + <_>9 4 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.4380050599575043e-003</threshold> + <left_val>0.2582435011863709</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 5 4 6 -1.</_> + <_>8 7 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1713329479098320e-003</threshold> + <left_val>0.4961163103580475</left_val> + <right_val>0.3215202987194061</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 0 8 6 -1.</_> + <_>9 2 8 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.2800728483125567e-004</threshold> + <left_node>1</left_node> + <right_val>0.5460423827171326</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 0 18 4 -1.</_> + <_>7 0 6 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.7982389852404594e-003</threshold> + <left_val>0.6046543717384338</left_val> + <right_val>0.4939922094345093</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 4 8 -1.</_> + <_>2 0 2 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.3543828912079334e-003</threshold> + <left_node>1</left_node> + <right_val>0.5291094183921814</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 6 9 -1.</_> + <_>2 4 2 9 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0146650401875377</threshold> + <left_val>0.5446122884750366</left_val> + <right_val>0.3567362129688263</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 4 18 2 -1.</_> + <_>7 4 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0302445106208324</threshold> + <left_val>0.5518329143524170</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 16 12 4 -1.</_> + <_>14 16 6 2 2.</_> + <_>8 18 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0566602088510990</threshold> + <left_val>0.6930978894233704</left_val> + <right_val>0.5093387961387634</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 18 2 -1.</_> + <_>0 0 9 1 2.</_> + <_>9 1 9 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6967479176819324e-003</threshold> + <left_val>0.3201526105403900</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 0 3 18 -1.</_> + <_>4 0 1 18 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0308067705482244</threshold> + <left_val>0.4989246129989624</left_val> + <right_val>0.2277054041624069</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 9 4 7 -1.</_> + <_>14 9 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2748769260942936e-003</threshold> + <left_val>0.4810931086540222</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 14 2 2 -1.</_> + <_>15 15 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0436900667846203e-003</threshold> + <left_val>0.5283867120742798</left_val> + <right_val>0.3255924880504608</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 9 4 7 -1.</_> + <_>4 9 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.6277956143021584e-003</threshold> + <left_val>0.6266536116600037</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 14 2 2 -1.</_> + <_>3 15 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.5113382879644632e-004</threshold> + <left_val>0.5097137093544006</left_val> + <right_val>0.3191910088062286</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 0 6 6 -1.</_> + <_>11 2 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.8188261725008488e-004</threshold> + <left_val>0.4549585878849030</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 0 2 6 -1.</_> + <_>15 0 1 3 2.</_> + <_>14 3 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0145949097350240</threshold> + <left_val>0.2645038962364197</left_val> + <right_val>0.5153868198394775</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 11 2 2 -1.</_> + <_>7 11 1 1 2.</_> + <_>8 12 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2304580304771662e-003</threshold> + <left_val>0.6197584867477417</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 10 2 2 -1.</_> + <_>8 10 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1867299801670015e-004</threshold> + <left_val>0.5469198822975159</left_val> + <right_val>0.4206855893135071</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 2 6 -1.</_> + <_>9 17 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0909959673881531e-003</threshold> + <left_val>0.4140760004520416</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 18 4 2 -1.</_> + <_>12 19 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5210378700867295e-004</threshold> + <left_val>0.5476608872413635</left_val> + <right_val>0.4155021011829376</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 17 4 3 -1.</_> + <_>8 18 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.2563779540359974e-003</threshold> + <left_val>0.7160469293594360</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 18 8 2 -1.</_> + <_>2 19 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4701850013807416e-003</threshold> + <left_val>0.5240808129310608</left_val> + <right_val>0.3729662895202637</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 9 16 3 -1.</_> + <_>2 10 16 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1472719779703766e-004</threshold> + <left_val>0.4033798873424530</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 9 2 2 -1.</_> + <_>9 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0506469774991274e-003</threshold> + <left_val>0.5263985991477966</left_val> + <right_val>0.3560093045234680</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 14 2 4 -1.</_> + <_>5 14 1 2 2.</_> + <_>6 16 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6269949739798903e-004</threshold> + <left_val>0.4569799900054932</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 9 4 2 -1.</_> + <_>8 9 2 1 2.</_> + <_>10 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6365550477057695e-003</threshold> + <left_val>0.3042570948600769</left_val> + <right_val>0.5868253707885742</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 2 5 -1.</_> + <_>9 5 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.4893293678760529e-003</threshold> + <left_node>1</left_node> + <right_val>0.4914157092571259</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 9 3 2 -1.</_> + <_>10 9 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8107408694922924e-003</threshold> + <left_val>0.4918529987335205</left_val> + <right_val>0.6266962885856628</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 9 3 2 -1.</_> + <_>9 9 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.5583951547741890e-004</threshold> + <left_node>1</left_node> + <right_val>0.5633236169815064</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 8 3 6 -1.</_> + <_>9 8 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.2017690353095531e-003</threshold> + <left_val>0.5553916096687317</left_val> + <right_val>0.3827646076679230</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 4 8 -1.</_> + <_>10 12 2 4 2.</_> + <_>8 16 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7908938936889172e-003</threshold> + <left_val>0.5498697757720947</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 17 16 2 -1.</_> + <_>10 17 8 1 2.</_> + <_>2 18 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8228569533675909e-003</threshold> + <left_val>0.4382283091545105</left_val> + <right_val>0.5424032807350159</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 3 8 -1.</_> + <_>9 12 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.2495508939027786e-003</threshold> + <left_val>0.2888121902942658</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 10 1 3 -1.</_> + <_>3 11 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.8744522286579013e-004</threshold> + <left_val>0.3472655117511749</left_val> + <right_val>0.5076370835304260</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 10 6 -1.</_> + <_>14 14 5 3 2.</_> + <_>9 17 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.5174440816044807e-003</threshold> + <left_val>0.4661205112934113</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 13 3 6 -1.</_> + <_>14 15 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0101513797417283</threshold> + <left_val>0.3744775056838989</left_val> + <right_val>0.5294001102447510</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 19 18 1 -1.</_> + <_>7 19 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.1399952024221420e-003</threshold> + <left_node>1</left_node> + <right_val>0.4660485088825226</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 10 15 2 -1.</_> + <_>7 10 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.7078551724553108e-003</threshold> + <left_val>0.4175061881542206</left_val> + <right_val>0.6916306018829346</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 17 16 3 -1.</_> + <_>4 18 16 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0419810414314270</threshold> + <left_node>1</left_node> + <right_val>0.2018215060234070</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 6 4 9 -1.</_> + <_>8 9 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0142729999497533</threshold> + <left_val>0.7511197924613953</left_val> + <right_val>0.5032083988189697</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 16 2 4 -1.</_> + <_>9 16 1 2 2.</_> + <_>10 18 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.0869521908462048e-003</threshold> + <left_node>1</left_node> + <right_val>0.2504513859748840</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 10 8 -1.</_> + <_>5 9 10 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7606799956411123e-003</threshold> + <left_val>0.3301401138305664</left_val> + <right_val>0.5218337178230286</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 1 4 2 -1.</_> + <_>13 1 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2550549581646919e-004</threshold> + <left_val>0.4614442884922028</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 0 3 6 -1.</_> + <_>14 2 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9503209516406059e-003</threshold> + <left_val>0.4619950056076050</left_val> + <right_val>0.5247030258178711</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 7 2 2 -1.</_> + <_>6 7 1 1 2.</_> + <_>7 8 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1312420247122645e-003</threshold> + <left_val>0.6314368247985840</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 1 6 1 -1.</_> + <_>9 1 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.6983180539682508e-003</threshold> + <left_val>0.3401306867599487</left_val> + <right_val>0.5055527091026306</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 11 3 3 -1.</_> + <_>9 12 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0114578204229474</threshold> + <left_node>1</left_node> + <right_val>0.4939996004104614</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 9 3 3 -1.</_> + <_>13 9 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.4962565451860428e-003</threshold> + <left_val>0.2965450882911682</left_val> + <right_val>0.5194367766380310</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 11 3 3 -1.</_> + <_>8 12 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0119190895929933</threshold> + <left_node>1</left_node> + <right_val>0.7886998057365418</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 9 3 3 -1.</_> + <_>6 9 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.4416420646011829e-003</threshold> + <left_val>0.5106986761093140</left_val> + <right_val>0.2967146039009094</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 11 1 3 -1.</_> + <_>10 12 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.7857811013236642e-004</threshold> + <left_val>0.5714371204376221</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 9 6 4 -1.</_> + <_>10 9 3 2 2.</_> + <_>7 11 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0312711130827665e-003</threshold> + <left_val>0.4481200873851776</left_val> + <right_val>0.5384911894798279</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 7 2 2 -1.</_> + <_>4 7 1 1 2.</_> + <_>5 8 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5262430533766747e-003</threshold> + <left_val>0.6193568706512451</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 7 3 1 -1.</_> + <_>6 7 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.2860880494117737e-003</threshold> + <left_val>0.4339885115623474</left_val> + <right_val>0.7697299122810364</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 3 2 3 -1.</_> + <_>18 4 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5010920837521553e-003</threshold> + <left_node>1</left_node> + <right_val>0.3171389102935791</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 1 4 2 -1.</_> + <_>13 1 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0125876702368259</threshold> + <left_val>0.5246698856353760</left_val> + <right_val>0.4241208136081696</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 1 4 2 -1.</_> + <_>5 1 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6207490009255707e-004</threshold> + <left_val>0.4231899976730347</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 0 5 2 -1.</_> + <_>3 1 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4701730075757951e-005</threshold> + <left_val>0.4174138903617859</left_val> + <right_val>0.5919603705406189</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 7 6 4 -1.</_> + <_>17 7 3 2 2.</_> + <_>14 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.8084698179736733e-004</threshold> + <left_val>0.4277389049530029</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 8 16 2 -1.</_> + <_>4 9 16 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.8851212058216333e-004</threshold> + <left_val>0.3720161020755768</left_val> + <right_val>0.5226818919181824</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 11 5 6 -1.</_> + <_>2 13 5 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.3369069676846266e-003</threshold> + <left_val>0.5478066802024841</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 16 2 4 -1.</_> + <_>5 16 1 2 2.</_> + <_>6 18 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6688359901309013e-003</threshold> + <left_val>0.3628678917884827</left_val> + <right_val>0.6150004863739014</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 6 2 12 -1.</_> + <_>16 6 1 6 2.</_> + <_>15 12 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0844469438306987e-004</threshold> + <left_val>0.4747075140476227</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 3 6 16 -1.</_> + <_>15 3 2 16 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.4617560449987650e-003</threshold> + <left_val>0.4580138027667999</left_val> + <right_val>0.5585681796073914</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 5 12 12 -1.</_> + <_>4 5 6 6 2.</_> + <_>10 11 6 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0189613103866577</threshold> + <left_val>0.5298801064491272</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 1 10 13 -1.</_> + <_>10 1 5 13 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1734731048345566</threshold> + <left_val>0.3698385059833527</left_val> + <right_val>0.8498619794845581</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 5 2 2 -1.</_> + <_>12 5 1 1 2.</_> + <_>11 6 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0020549709443003e-004</threshold> + <left_node>1</left_node> + <right_val>0.5565661787986755</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 5 1 3 -1.</_> + <_>13 6 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0967060225084424e-003</threshold> + <left_val>0.4795713126659393</left_val> + <right_val>0.6286259889602661</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 4 2 4 -1.</_> + <_>7 4 1 2 2.</_> + <_>8 6 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5107099898159504e-004</threshold> + <left_val>0.4052405953407288</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 5 6 4 -1.</_> + <_>10 5 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.4463501069694757e-003</threshold> + <left_val>0.6173015236854553</left_val> + <right_val>0.4414263963699341</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 4 4 6 -1.</_> + <_>14 4 2 3 2.</_> + <_>12 7 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.5176620632410049e-003</threshold> + <left_node>1</left_node> + <right_val>0.3570570945739746</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 11 7 6 -1.</_> + <_>12 13 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0358121097087860</threshold> + <left_val>0.3151328861713409</left_val> + <right_val>0.5252702832221985</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 6 6 6 -1.</_> + <_>7 6 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0211554002016783</threshold> + <left_val>0.6124721169471741</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 8 2 2 -1.</_> + <_>9 9 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.9890940580517054e-004</threshold> + <left_val>0.5169975757598877</left_val> + <right_val>0.3596271872520447</right_val></_></_> + <_> + <!-- tree 63 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 6 2 2 -1.</_> + <_>16 6 1 1 2.</_> + <_>15 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5613760333508253e-003</threshold> + <left_node>1</left_node> + <right_val>0.4914987981319428</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 7 4 4 -1.</_> + <_>16 7 2 2 2.</_> + <_>14 9 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7120860330760479e-004</threshold> + <left_val>0.4546211063861847</left_val> + <right_val>0.5395811796188355</right_val></_></_> + <_> + <!-- tree 64 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 6 2 -1.</_> + <_>7 5 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0215970296412706</threshold> + <left_val>0.1903133988380432</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 19 18 1 -1.</_> + <_>7 19 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0249472297728062</threshold> + <left_val>0.6974077224731445</left_val> + <right_val>0.4967716038227081</right_val></_></_> + <_> + <!-- tree 65 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 3 3 3 -1.</_> + <_>12 4 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.8725979607552290e-003</threshold> + <left_val>0.4748947918415070</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 0 2 3 -1.</_> + <_>16 1 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.3912719488143921e-003</threshold> + <left_val>0.5180178284645081</left_val> + <right_val>0.2924321889877319</right_val></_></_> + <_> + <!-- tree 66 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 3 3 3 -1.</_> + <_>5 4 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.1552399098873138e-003</threshold> + <left_val>0.7665870189666748</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 0 2 3 -1.</_> + <_>2 1 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1715660113841295e-003</threshold> + <left_val>0.5215551257133484</left_val> + <right_val>0.3365719020366669</right_val></_></_> + <_> + <!-- tree 67 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>15 6 2 2 -1.</_> + <_>16 6 1 1 2.</_> + <_>15 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2330369791015983e-003</threshold> + <left_node>1</left_node> + <right_val>0.6260957717895508</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 13 1 6 -1.</_> + <_>10 16 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.0785901364870369e-004</threshold> + <left_val>0.4533509910106659</left_val> + <right_val>0.5386489033699036</right_val></_></_> + <_> + <!-- tree 68 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 7 10 2 -1.</_> + <_>0 7 5 1 2.</_> + <_>5 8 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6437609125860035e-004</threshold> + <left_val>0.4103496074676514</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 10 6 2 -1.</_> + <_>3 11 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1600199650274590e-004</threshold> + <left_val>0.5830391049385071</left_val> + <right_val>0.4304105937480927</right_val></_></_> + <_> + <!-- tree 69 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 18 4 2 -1.</_> + <_>12 19 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0127187203615904</threshold> + <left_val>0.2132582962512970</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 18 2 2 -1.</_> + <_>13 18 1 1 2.</_> + <_>12 19 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.9431880041956902e-005</threshold> + <left_val>0.4872891008853912</left_val> + <right_val>0.5458915233612061</right_val></_></_> + <_> + <!-- tree 70 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 19 2 1 -1.</_> + <_>7 19 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.3913689549081028e-004</threshold> + <left_val>0.3974364995956421</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 4 2 16 -1.</_> + <_>0 4 1 8 2.</_> + <_>1 12 1 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0180263407528400</threshold> + <left_val>0.7568550705909729</left_val> + <right_val>0.5045611858367920</right_val></_></_> + <_> + <!-- tree 71 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 1 4 9 -1.</_> + <_>16 4 4 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.9179181009531021e-003</threshold> + <left_node>1</left_node> + <right_val>0.3966299891471863</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 2 1 2 -1.</_> + <_>10 3 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1839679791592062e-004</threshold> + <left_val>0.4198082983493805</left_val> + <right_val>0.5435804128646851</right_val></_></_> + <_> + <!-- tree 72 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 14 4 6 -1.</_> + <_>4 14 2 3 2.</_> + <_>6 17 2 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9474181830883026e-003</threshold> + <left_val>0.6369457840919495</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 15 1 4 -1.</_> + <_>4 17 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0050919273635373e-005</threshold> + <left_val>0.5269566774368286</left_val> + <right_val>0.3812243044376373</right_val></_></_> + <_> + <!-- tree 73 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 20 4 -1.</_> + <_>10 2 10 2 2.</_> + <_>0 4 10 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.1423643752932549e-003</threshold> + <left_node>1</left_node> + <right_val>0.4156762957572937</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 5 2 8 -1.</_> + <_>14 9 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1305440168362111e-004</threshold> + <left_val>0.3523533046245575</left_val> + <right_val>0.5349454283714294</right_val></_></_> + <_> + <!-- tree 74 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 12 4 5 -1.</_> + <_>7 12 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0855850016232580e-004</threshold> + <left_node>1</left_node> + <right_val>0.4403322041034699</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 13 9 6 -1.</_> + <_>0 15 9 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3130389852449298e-003</threshold> + <left_val>0.6058161258697510</left_val> + <right_val>0.4468218982219696</right_val></_></_> + <_> + <!-- tree 75 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 11 3 -1.</_> + <_>9 15 11 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9134768992662430e-003</threshold> + <left_node>1</left_node> + <right_val>0.4825705885887146</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 7 3 -1.</_> + <_>7 15 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9645769391208887e-003</threshold> + <left_val>0.4835998117923737</left_val> + <right_val>0.6039277911186218</right_val></_></_> + <_> + <!-- tree 76 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 6 2 2 -1.</_> + <_>3 6 1 1 2.</_> + <_>4 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7772549763321877e-003</threshold> + <left_node>1</left_node> + <right_val>0.6871827244758606</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 2 7 -1.</_> + <_>7 7 1 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.7136349864304066e-003</threshold> + <left_val>0.2842220962047577</left_val> + <right_val>0.5145428180694580</right_val></_></_> + <_> + <!-- tree 77 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 5 1 3 -1.</_> + <_>14 6 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.1027478184551001e-004</threshold> + <left_node>1</left_node> + <right_val>0.6024426221847534</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>13 4 4 3 -1.</_> + <_>13 5 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7460630042478442e-003</threshold> + <left_val>0.4756610095500946</left_val> + <right_val>0.5721154212951660</right_val></_></_> + <_> + <!-- tree 78 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 7 4 4 -1.</_> + <_>2 7 2 2 2.</_> + <_>4 9 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.8068278809078038e-004</threshold> + <left_node>1</left_node> + <right_val>0.4931069016456604</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 9 13 6 -1.</_> + <_>2 12 13 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.8228890150785446e-003</threshold> + <left_val>0.3311698138713837</left_val> + <right_val>0.6227598190307617</right_val></_></_> + <_> + <!-- tree 79 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 1 3 4 -1.</_> + <_>11 1 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.3000478073954582e-003</threshold> + <left_node>1</left_node> + <right_val>0.5232092738151550</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 8 5 2 -1.</_> + <_>9 9 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.4951299059903249e-005</threshold> + <left_val>0.3995231986045837</left_val> + <right_val>0.5314797759056091</right_val></_></_> + <_> + <!-- tree 80 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 14 11 3 -1.</_> + <_>0 15 11 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2752458937466145e-003</threshold> + <left_val>0.4481619894504547</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 11 2 8 -1.</_> + <_>8 15 2 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8162579983472824e-003</threshold> + <left_val>0.3907971978187561</left_val> + <right_val>0.6671640872955322</right_val></_></_> + <_> + <!-- tree 81 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 11 10 6 -1.</_> + <_>5 14 10 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4112279750406742e-003</threshold> + <left_val>0.5357010960578919</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 13 15 5 -1.</_> + <_>10 13 5 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.3062034100294113e-003</threshold> + <left_val>0.4770965874195099</left_val> + <right_val>0.5570099949836731</right_val></_></_> + <_> + <!-- tree 82 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 10 1 10 -1.</_> + <_>8 15 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2164839319884777e-003</threshold> + <left_val>0.4947124123573303</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 14 6 2 -1.</_> + <_>6 14 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.9868631176650524e-003</threshold> + <left_val>0.5241307020187378</left_val> + <right_val>0.2512654960155487</right_val></_></_> + <_> + <!-- tree 83 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 14 7 3 -1.</_> + <_>7 15 7 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.6664260551333427e-003</threshold> + <left_node>1</left_node> + <right_val>0.4619553983211517</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 16 9 3 -1.</_> + <_>7 17 9 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0105812298133969</threshold> + <left_val>0.6301718950271606</left_val> + <right_val>0.4973031878471375</right_val></_></_> + <_> + <!-- tree 84 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 7 3 3 -1.</_> + <_>8 8 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.3366491124033928e-003</threshold> + <left_node>1</left_node> + <right_val>0.2870970070362091</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 5 1 6 -1.</_> + <_>3 8 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9318940252996981e-004</threshold> + <left_val>0.4252805113792419</left_val> + <right_val>0.5579246878623962</right_val></_></_> + <_> + <!-- tree 85 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 5 11 2 -1.</_> + <_>6 6 11 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.1375334411859512e-003</threshold> + <left_val>0.5747315883636475</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 0 3 2 -1.</_> + <_>10 0 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4809150490909815e-003</threshold> + <left_val>0.5203374028205872</left_val> + <right_val>0.3903566896915436</right_val></_></_> + <_> + <!-- tree 86 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 1 3 -1.</_> + <_>5 6 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.8749779388308525e-004</threshold> + <left_node>1</left_node> + <right_val>0.5534321069717407</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 3 2 -1.</_> + <_>9 7 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2194919660687447e-004</threshold> + <left_val>0.5338044166564941</left_val> + <right_val>0.3925840854644775</right_val></_></_> + <_> + <!-- tree 87 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 2 10 6 -1.</_> + <_>10 2 5 3 2.</_> + <_>5 5 5 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.9790111631155014e-003</threshold> + <left_val>0.4144316017627716</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 4 6 4 -1.</_> + <_>8 4 3 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1439629597589374e-003</threshold> + <left_val>0.4701372981071472</left_val> + <right_val>0.5281736254692078</right_val></_></_> + <_> + <!-- tree 88 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 16 3 4 -1.</_> + <_>9 16 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.5542130507528782e-003</threshold> + <left_node>1</left_node> + <right_val>0.2527256011962891</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 13 2 6 -1.</_> + <_>9 13 1 3 2.</_> + <_>10 16 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0288399644196033e-003</threshold> + <left_val>0.5605146288871765</left_val> + <right_val>0.4297856092453003</right_val></_></_> + <_> + <!-- tree 89 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 3 1 -1.</_> + <_>10 8 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.7234670231118798e-003</threshold> + <left_node>1</left_node> + <right_val>0.4839682877063751</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 5 18 15 -1.</_> + <_>2 10 18 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.5758669972419739</threshold> + <left_val>0.5110502839088440</left_val> + <right_val>0.0804893299937248</right_val></_></_></trees> + <stage_threshold>44.2512817382812500</stage_threshold> + <parent>17</parent> + <next>-1</next></_> + <_> + <!-- stage 19 --> + <trees> + <_> + <!-- tree 0 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 3 6 2 -1.</_> + <_>4 3 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.6640521399676800e-003</threshold> + <left_val>0.3828920125961304</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 6 6 2 -1.</_> + <_>9 6 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.9905522763729095e-003</threshold> + <left_val>0.4858429133892059</left_val> + <right_val>0.7354959249496460</right_val></_></_> + <_> + <!-- tree 1 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 17 4 3 -1.</_> + <_>8 18 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.7154200039803982e-003</threshold> + <left_node>1</left_node> + <right_val>0.6723223924636841</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 13 2 3 -1.</_> + <_>10 14 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1257929727435112e-003</threshold> + <left_val>0.4429577887058258</left_val> + <right_val>0.6070777773857117</right_val></_></_> + <_> + <!-- tree 2 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 10 20 4 -1.</_> + <_>0 12 20 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.1789010912179947e-004</threshold> + <left_node>1</left_node> + <right_val>0.3076345026493073</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 7 6 4 -1.</_> + <_>5 7 3 2 2.</_> + <_>8 9 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0492859873920679e-003</threshold> + <left_val>0.5593643784523010</left_val> + <right_val>0.3651022911071777</right_val></_></_> + <_> + <!-- tree 3 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 12 1 2 -1.</_> + <_>11 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.5453929740469903e-005</threshold> + <left_val>0.4277968108654022</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 10 2 3 -1.</_> + <_>10 11 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.9015709878876805e-004</threshold> + <left_val>0.4583545029163361</left_val> + <right_val>0.5284683108329773</right_val></_></_> + <_> + <!-- tree 4 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 5 2 2 -1.</_> + <_>9 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6071660502348095e-004</threshold> + <left_node>1</left_node> + <right_val>0.3798192143440247</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 4 1 10 -1.</_> + <_>4 9 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.2961107576265931e-004</threshold> + <left_val>0.3850437104701996</left_val> + <right_val>0.5939688086509705</right_val></_></_> + <_> + <!-- tree 5 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 18 4 2 -1.</_> + <_>11 18 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6682569296099246e-004</threshold> + <left_val>0.4123024940490723</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 18 3 2 -1.</_> + <_>12 19 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3492540165316314e-004</threshold> + <left_val>0.5760599970817566</left_val> + <right_val>0.4237645864486694</right_val></_></_> + <_> + <!-- tree 6 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 6 16 6 -1.</_> + <_>0 6 8 3 2.</_> + <_>8 9 8 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0108416797593236</threshold> + <left_val>0.3929921090602875</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 6 4 12 -1.</_> + <_>7 12 4 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0120778298005462</threshold> + <left_val>0.5761923193931580</left_val> + <right_val>0.2780444920063019</right_val></_></_> + <_> + <!-- tree 7 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 18 4 2 -1.</_> + <_>11 18 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.2128869313746691e-003</threshold> + <left_val>0.4794507026672363</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 18 3 2 -1.</_> + <_>12 19 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0152661902830005</threshold> + <left_val>0.0740558803081512</left_val> + <right_val>0.5153577923774719</right_val></_></_> + <_> + <!-- tree 8 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 12 1 2 -1.</_> + <_>8 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7929533543065190e-005</threshold> + <left_node>1</left_node> + <right_val>0.5858737826347351</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 1 3 -1.</_> + <_>8 14 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7633590323384851e-004</threshold> + <left_val>0.3567610979080200</left_val> + <right_val>0.5598962903022766</right_val></_></_> + <_> + <!-- tree 9 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 18 4 2 -1.</_> + <_>11 18 2 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.1311381654813886e-004</threshold> + <left_node>1</left_node> + <right_val>0.5346850752830505</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 12 4 6 -1.</_> + <_>14 12 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.2630451023578644e-003</threshold> + <left_val>0.4782536923885346</left_val> + <right_val>0.5456753969192505</right_val></_></_> + <_> + <!-- tree 10 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 0 3 4 -1.</_> + <_>7 0 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9503918960690498e-003</threshold> + <left_val>0.2831811904907227</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 0 2 8 -1.</_> + <_>4 0 1 4 2.</_> + <_>5 4 1 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.9864578866399825e-004</threshold> + <left_val>0.5485215783119202</left_val> + <right_val>0.4159697890281677</right_val></_></_> + <_> + <!-- tree 11 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 17 9 3 -1.</_> + <_>14 17 3 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0114325201138854</threshold> + <left_val>0.5639101266860962</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 2 4 5 -1.</_> + <_>16 2 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3339172154664993e-003</threshold> + <left_val>0.4596984088420868</left_val> + <right_val>0.5931242704391480</right_val></_></_> + <_> + <!-- tree 12 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 5 9 -1.</_> + <_>0 5 5 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.3193257451057434e-003</threshold> + <left_node>1</left_node> + <right_val>0.3230620026588440</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 2 3 2 -1.</_> + <_>8 2 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2479918920435011e-004</threshold> + <left_val>0.3795293867588043</left_val> + <right_val>0.5408611297607422</right_val></_></_> + <_> + <!-- tree 13 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>11 17 9 3 -1.</_> + <_>14 17 3 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1118943020701408</threshold> + <left_val>0.1132297962903976</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>16 2 4 5 -1.</_> + <_>16 2 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.5553781352937222e-003</threshold> + <left_val>0.6339370012283325</left_val> + <right_val>0.4838770925998688</right_val></_></_> + <_> + <!-- tree 14 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 17 9 3 -1.</_> + <_>3 17 3 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0337029173970222e-003</threshold> + <left_val>0.5665255188941956</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 4 5 -1.</_> + <_>2 2 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0148336803540587</threshold> + <left_val>0.6751418113708496</left_val> + <right_val>0.4140945076942444</right_val></_></_> + <_> + <!-- tree 15 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 11 10 9 -1.</_> + <_>5 14 10 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7506724521517754e-003</threshold> + <left_node>1</left_node> + <right_val>0.3561258912086487</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 6 3 3 -1.</_> + <_>9 7 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6645010327920318e-003</threshold> + <left_val>0.5347279906272888</left_val> + <right_val>0.3649779856204987</right_val></_></_> + <_> + <!-- tree 16 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 17 5 3 -1.</_> + <_>3 18 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.4900820404291153e-003</threshold> + <left_node>1</left_node> + <right_val>0.2754656076431274</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 5 4 7 -1.</_> + <_>9 5 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1133110383525491e-003</threshold> + <left_val>0.4225992858409882</left_val> + <right_val>0.5629178881645203</right_val></_></_> + <_> + <!-- tree 17 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 2 5 -1.</_> + <_>9 8 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.4940755516290665e-003</threshold> + <left_val>0.4906036853790283</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 2 18 2 -1.</_> + <_>2 3 18 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5396620146930218e-003</threshold> + <left_val>0.4007051885128021</left_val> + <right_val>0.5380709171295166</right_val></_></_> + <_> + <!-- tree 18 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 8 15 6 -1.</_> + <_>7 8 5 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1343495994806290</threshold> + <left_node>1</left_node> + <right_val>0.2214671969413757</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 8 2 5 -1.</_> + <_>10 8 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.4940755516290665e-003</threshold> + <left_val>0.7353156208992004</left_val> + <right_val>0.5005033016204834</right_val></_></_> + <_> + <!-- tree 19 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 10 4 6 -1.</_> + <_>12 12 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0200117900967598</threshold> + <left_node>1</left_node> + <right_val>0.3327906131744385</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 3 6 2 -1.</_> + <_>14 4 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8875009845942259e-003</threshold> + <left_val>0.3915289044380188</left_val> + <right_val>0.5401849746704102</right_val></_></_> + <_> + <!-- tree 20 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 5 2 3 -1.</_> + <_>5 6 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.1842782199382782e-003</threshold> + <left_node>1</left_node> + <right_val>0.7176604866981506</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 6 3 3 -1.</_> + <_>4 7 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6976969782263041e-003</threshold> + <left_val>0.4526978135108948</left_val> + <right_val>0.6076912879943848</right_val></_></_> + <_> + <!-- tree 21 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 12 3 3 -1.</_> + <_>14 13 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.9219978973269463e-003</threshold> + <left_node>1</left_node> + <right_val>0.2569833993911743</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 12 11 3 -1.</_> + <_>6 13 11 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0118031995370984</threshold> + <left_val>0.4999637901782990</left_val> + <right_val>0.5958228111267090</right_val></_></_> + <_> + <!-- tree 22 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 2 3 6 -1.</_> + <_>1 4 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.7703449428081512e-003</threshold> + <left_val>0.3459093868732452</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 0 4 7 -1.</_> + <_>3 0 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.1174899302423000e-003</threshold> + <left_val>0.4515126943588257</left_val> + <right_val>0.5829715728759766</right_val></_></_> + <_> + <!-- tree 23 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 8 3 4 -1.</_> + <_>10 8 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.4801411032676697e-003</threshold> + <left_val>0.4807392060756683</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 9 2 2 -1.</_> + <_>10 10 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6078789960592985e-003</threshold> + <left_val>0.3462216854095459</left_val> + <right_val>0.5201594829559326</right_val></_></_> + <_> + <!-- tree 24 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 8 3 4 -1.</_> + <_>9 8 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.7252747938036919e-003</threshold> + <left_val>0.6599853038787842</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 4 10 10 -1.</_> + <_>4 9 10 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.2325618714094162e-003</threshold> + <left_val>0.2821828126907349</left_val> + <right_val>0.5125284790992737</right_val></_></_> + <_> + <!-- tree 25 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 10 3 2 -1.</_> + <_>10 10 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.9571950957179070e-004</threshold> + <left_val>0.4883818924427033</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 10 3 2 -1.</_> + <_>9 11 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5021569561213255e-004</threshold> + <left_val>0.4829918146133423</left_val> + <right_val>0.5428717136383057</right_val></_></_> + <_> + <!-- tree 26 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 10 3 2 -1.</_> + <_>9 10 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.8489659093320370e-004</threshold> + <left_val>0.4434598982334137</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 4 14 12 -1.</_> + <_>2 4 7 6 2.</_> + <_>9 10 7 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0961926504969597</threshold> + <left_val>0.2256636023521423</left_val> + <right_val>0.5956227779388428</right_val></_></_> + <_> + <!-- tree 27 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 12 1 6 -1.</_> + <_>10 15 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1053519556298852e-003</threshold> + <left_val>0.4527224004268646</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 3 8 16 -1.</_> + <_>11 3 4 8 2.</_> + <_>7 11 4 8 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.1021504029631615</threshold> + <left_val>0.2844349145889282</left_val> + <right_val>0.5186452865600586</right_val></_></_> + <_> + <!-- tree 28 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 6 8 10 -1.</_> + <_>5 6 4 5 2.</_> + <_>9 11 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0147889629006386e-003</threshold> + <left_node>1</left_node> + <right_val>0.3808999061584473</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 2 8 8 -1.</_> + <_>6 2 4 4 2.</_> + <_>10 6 4 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.6131648384034634e-003</threshold> + <left_val>0.5718699097633362</left_val> + <right_val>0.4262563884258270</right_val></_></_> + <_> + <!-- tree 29 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 5 4 2 -1.</_> + <_>12 5 2 1 2.</_> + <_>10 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5197630273178220e-003</threshold> + <left_node>1</left_node> + <right_val>0.5942718982696533</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 4 3 3 -1.</_> + <_>12 5 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0141972796991467</threshold> + <left_val>0.7731103897094727</left_val> + <right_val>0.4997653961181641</right_val></_></_> + <_> + <!-- tree 30 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 19 12 1 -1.</_> + <_>8 19 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0138188796117902</threshold> + <left_val>0.6681138277053833</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 2 3 1 -1.</_> + <_>9 2 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.0701329018920660e-004</threshold> + <left_val>0.3305608034133911</left_val> + <right_val>0.4749974906444550</right_val></_></_> + <_> + <!-- tree 31 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 17 4 3 -1.</_> + <_>13 18 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.3537531793117523e-003</threshold> + <left_val>0.2860932946205139</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 14 6 3 -1.</_> + <_>7 15 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.4771059229969978e-003</threshold> + <left_val>0.6188883185386658</left_val> + <right_val>0.4842100143432617</right_val></_></_> + <_> + <!-- tree 32 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 2 3 -1.</_> + <_>9 15 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6923650400713086e-003</threshold> + <left_node>1</left_node> + <right_val>0.6070249080657959</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 15 6 3 -1.</_> + <_>7 16 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8652542065829039e-004</threshold> + <left_val>0.3782689869403839</left_val> + <right_val>0.5368196964263916</right_val></_></_> + <_> + <!-- tree 33 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 18 3 2 -1.</_> + <_>11 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.5826620403677225e-003</threshold> + <left_val>0.3690209984779358</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 12 2 3 -1.</_> + <_>14 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7307639829814434e-003</threshold> + <left_val>0.3857114911079407</left_val> + <right_val>0.5318108797073364</right_val></_></_> + <_> + <!-- tree 34 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 10 4 6 -1.</_> + <_>4 12 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0218715704977512</threshold> + <left_node>1</left_node> + <right_val>0.2327008992433548</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 13 3 2 -1.</_> + <_>4 14 3 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5010299648565706e-005</threshold> + <left_val>0.5560722947120667</left_val> + <right_val>0.4301410019397736</right_val></_></_> + <_> + <!-- tree 35 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 16 2 3 -1.</_> + <_>9 17 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3583700209856033e-003</threshold> + <left_node>1</left_node> + <right_val>0.6767637729644775</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 18 3 2 -1.</_> + <_>11 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.0057549960911274e-003</threshold> + <left_val>0.5194904208183289</left_val> + <right_val>0.3612853884696960</right_val></_></_> + <_> + <!-- tree 36 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 18 3 2 -1.</_> + <_>8 18 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.9030070398002863e-003</threshold> + <left_val>0.3237845003604889</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 10 4 2 -1.</_> + <_>1 11 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8506693243980408e-003</threshold> + <left_val>0.1194851994514465</left_val> + <right_val>0.4991723895072937</right_val></_></_> + <_> + <!-- tree 37 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 4 6 3 -1.</_> + <_>12 5 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7093670796602964e-003</threshold> + <left_node>1</left_node> + <right_val>0.4854960143566132</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 4 1 3 -1.</_> + <_>14 5 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4138079714030027e-003</threshold> + <left_val>0.4872322976589203</left_val> + <right_val>0.5903577804565430</right_val></_></_> + <_> + <!-- tree 38 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 4 6 3 -1.</_> + <_>2 5 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.0300198644399643e-003</threshold> + <left_node>1</left_node> + <right_val>0.6547315716743469</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 4 1 3 -1.</_> + <_>5 5 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.7925681620836258e-004</threshold> + <left_val>0.5849273204803467</left_val> + <right_val>0.4554230868816376</right_val></_></_> + <_> + <!-- tree 39 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 12 3 3 -1.</_> + <_>14 13 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3984439428895712e-003</threshold> + <left_node>1</left_node> + <right_val>0.4064626097679138</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 12 2 3 -1.</_> + <_>15 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.3372107474133372e-004</threshold> + <left_val>0.5399543046951294</left_val> + <right_val>0.4152809977531433</right_val></_></_> + <_> + <!-- tree 40 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 16 4 3 -1.</_> + <_>3 17 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0105510596185923</threshold> + <left_node>1</left_node> + <right_val>0.1796680986881256</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 0 4 2 -1.</_> + <_>8 1 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.8344102550763637e-005</threshold> + <left_val>0.4251863062381744</left_val> + <right_val>0.5413522720336914</right_val></_></_> + <_> + <!-- tree 41 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 20 1 -1.</_> + <_>0 0 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0410223081707954</threshold> + <left_node>1</left_node> + <right_val>0.5228124856948853</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 3 4 -1.</_> + <_>10 7 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.5065628625452518e-003</threshold> + <left_val>0.4853743016719818</left_val> + <right_val>0.6093444228172302</right_val></_></_> + <_> + <!-- tree 42 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 0 20 1 -1.</_> + <_>10 0 10 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0410223081707954</threshold> + <left_node>1</left_node> + <right_val>0.2205024063587189</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 3 4 -1.</_> + <_>9 7 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.3961377125233412e-004</threshold> + <left_val>0.5692731738090515</left_val> + <right_val>0.4468756914138794</right_val></_></_> + <_> + <!-- tree 43 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 6 19 3 -1.</_> + <_>1 7 19 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0686960369348526</threshold> + <left_val>0.1483314037322998</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 7 4 2 -1.</_> + <_>12 8 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.8447940237820148e-003</threshold> + <left_val>0.6211283802986145</left_val> + <right_val>0.4966601133346558</right_val></_></_> + <_> + <!-- tree 44 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 8 3 3 -1.</_> + <_>7 9 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.0959919355809689e-003</threshold> + <left_val>0.2294671982526779</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 7 3 3 -1.</_> + <_>8 7 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2068301700055599e-003</threshold> + <left_val>0.6407091021537781</left_val> + <right_val>0.4748562872409821</right_val></_></_> + <_> + <!-- tree 45 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 9 16 3 -1.</_> + <_>2 10 16 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.1332789957523346e-004</threshold> + <left_node>1</left_node> + <right_val>0.5354936122894287</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 4 2 12 -1.</_> + <_>9 8 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.1175677999854088</threshold> + <left_val>0.5136978030204773</left_val> + <right_val>0.0105957398191094</right_val></_></_> + <_> + <!-- tree 46 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 3 2 5 -1.</_> + <_>8 3 1 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.9354289987822995e-005</threshold> + <left_val>0.3711803853511810</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 7 2 3 -1.</_> + <_>9 8 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.3173691742122173e-003</threshold> + <left_val>0.1712073981761932</left_val> + <right_val>0.5061758160591126</right_val></_></_> + <_> + <!-- tree 47 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 4 3 -1.</_> + <_>9 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0149414995685220</threshold> + <left_node>1</left_node> + <right_val>0.6729118824005127</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 8 6 4 -1.</_> + <_>10 8 3 2 2.</_> + <_>7 10 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0789399277418852e-003</threshold> + <left_val>0.4410645961761475</left_val> + <right_val>0.5444027781486511</right_val></_></_> + <_> + <!-- tree 48 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 2 2 -1.</_> + <_>10 7 1 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0736219640821218e-004</threshold> + <left_val>0.5568910837173462</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 5 6 6 -1.</_> + <_>7 5 2 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1247111037373543e-003</threshold> + <left_val>0.5023869276046753</left_val> + <right_val>0.3562405109405518</right_val></_></_> + <_> + <!-- tree 49 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 1 3 6 -1.</_> + <_>10 1 1 6 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.8919378574937582e-004</threshold> + <left_node>1</left_node> + <right_val>0.5456786155700684</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 5 12 2 -1.</_> + <_>8 5 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0101795801892877</threshold> + <left_val>0.5545138716697693</left_val> + <right_val>0.4622310996055603</right_val></_></_> + <_> + <!-- tree 50 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 2 6 4 -1.</_> + <_>6 2 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.7506109327077866e-003</threshold> + <left_node>1</left_node> + <right_val>0.4942536056041718</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 8 2 -1.</_> + <_>4 8 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0106013296172023</threshold> + <left_val>0.2961233854293823</left_val> + <right_val>0.5964338779449463</right_val></_></_> + <_> + <!-- tree 51 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 6 14 6 -1.</_> + <_>10 6 7 3 2.</_> + <_>3 9 7 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.1466780714690685e-003</threshold> + <left_val>0.5495228767395020</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 6 14 3 -1.</_> + <_>3 6 7 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0763211473822594</threshold> + <left_val>0.5173959136009216</left_val> + <right_val>0.2940216958522797</right_val></_></_> + <_> + <!-- tree 52 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 5 2 2 -1.</_> + <_>0 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5027689514681697e-003</threshold> + <left_val>0.3106299936771393</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 13 4 3 -1.</_> + <_>8 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0122666703537107</threshold> + <left_val>0.4651150107383728</left_val> + <right_val>0.6846613883972168</right_val></_></_> + <_> + <!-- tree 53 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 0 3 20 -1.</_> + <_>14 0 1 20 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0311185792088509</threshold> + <left_node>1</left_node> + <right_val>0.5226057171821594</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 8 10 3 -1.</_> + <_>10 9 10 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0289055891335011</threshold> + <left_val>0.5182244181632996</left_val> + <right_val>0.2705428004264832</right_val></_></_> + <_> + <!-- tree 54 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 0 3 20 -1.</_> + <_>5 0 1 20 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0475983805954456</threshold> + <left_node>1</left_node> + <right_val>0.1109512001276016</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 8 10 3 -1.</_> + <_>0 9 10 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0308085493743420</threshold> + <left_val>0.4938625097274780</left_val> + <right_val>0.1404110938310623</right_val></_></_> + <_> + <!-- tree 55 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 5 3 4 -1.</_> + <_>13 5 1 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.1277810446918011e-004</threshold> + <left_node>1</left_node> + <right_val>0.4392356872558594</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 7 12 4 -1.</_> + <_>10 7 4 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0789699628949165</threshold> + <left_val>0.5216552019119263</left_val> + <right_val>0.2294113934040070</right_val></_></_> + <_> + <!-- tree 56 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 14 6 6 -1.</_> + <_>1 14 3 3 2.</_> + <_>4 17 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0102579500526190</threshold> + <left_val>0.6176652908325195</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 17 6 2 -1.</_> + <_>1 18 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.2604889925569296e-003</threshold> + <left_val>0.5236222743988037</left_val> + <right_val>0.3328965902328491</right_val></_></_> + <_> + <!-- tree 57 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 8 6 12 -1.</_> + <_>17 8 3 6 2.</_> + <_>14 14 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0334904603660107</threshold> + <left_node>1</left_node> + <right_val>0.4866186976432800</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>18 5 2 2 -1.</_> + <_>18 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.9202767442911863e-004</threshold> + <left_val>0.4116407036781311</left_val> + <right_val>0.5395640134811401</right_val></_></_> + <_> + <!-- tree 58 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 16 4 2 -1.</_> + <_>3 16 2 1 2.</_> + <_>5 17 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.0320750738610514e-005</threshold> + <left_node>1</left_node> + <right_val>0.5610736012458801</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 16 6 2 -1.</_> + <_>4 16 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.4369680583477020e-004</threshold> + <left_val>0.5621389150619507</left_val> + <right_val>0.3461203873157501</right_val></_></_> + <_> + <!-- tree 59 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 8 6 12 -1.</_> + <_>17 8 3 6 2.</_> + <_>14 14 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0334904603660107</threshold> + <left_node>1</left_node> + <right_val>0.4896762073040009</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>18 5 2 2 -1.</_> + <_>18 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.9202767442911863e-004</threshold> + <left_val>0.4305404126644135</left_val> + <right_val>0.5340713858604431</right_val></_></_> + <_> + <!-- tree 60 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 16 9 2 -1.</_> + <_>8 16 3 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0550889894366264e-003</threshold> + <left_val>0.5544999837875366</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 14 6 6 -1.</_> + <_>3 14 3 3 2.</_> + <_>6 17 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4353571720421314e-003</threshold> + <left_val>0.6038540005683899</left_val> + <right_val>0.3746592998504639</right_val></_></_> + <_> + <!-- tree 61 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 8 6 12 -1.</_> + <_>17 8 3 6 2.</_> + <_>14 14 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0841704234480858</threshold> + <left_node>1</left_node> + <right_val>0.5007348060607910</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 7 2 12 -1.</_> + <_>11 11 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.7419027909636497e-003</threshold> + <left_val>0.5298097133636475</left_val> + <right_val>0.4716145098209381</right_val></_></_> + <_> + <!-- tree 62 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 8 6 12 -1.</_> + <_>0 8 3 6 2.</_> + <_>3 14 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0102781504392624</threshold> + <left_node>1</left_node> + <right_val>0.6269375085830689</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 7 2 12 -1.</_> + <_>7 11 2 4 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.8800862170755863e-003</threshold> + <left_val>0.5154827833175659</left_val> + <right_val>0.3813040852546692</right_val></_></_> + <_> + <!-- tree 63 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 12 1 2 -1.</_> + <_>14 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.9679190346505493e-006</threshold> + <left_node>1</left_node> + <right_val>0.4440239965915680</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 13 8 1 -1.</_> + <_>12 13 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.2419527461752295e-004</threshold> + <left_val>0.4697534143924713</left_val> + <right_val>0.5485504269599915</right_val></_></_> + <_> + <!-- tree 64 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 3 16 6 -1.</_> + <_>0 6 16 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.5268318392336369e-003</threshold> + <left_val>0.5513604879379273</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 4 8 2 -1.</_> + <_>1 4 4 1 2.</_> + <_>5 5 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.6128671430051327e-004</threshold> + <left_val>0.3618639111518860</left_val> + <right_val>0.5838456749916077</right_val></_></_> + <_> + <!-- tree 65 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>14 12 1 2 -1.</_> + <_>14 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.4810510221868753e-003</threshold> + <left_node>1</left_node> + <right_val>0.2523222863674164</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>15 12 2 3 -1.</_> + <_>15 13 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.0480589699000120e-003</threshold> + <left_val>0.4117257893085480</left_val> + <right_val>0.5392996072769165</right_val></_></_> + <_> + <!-- tree 66 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 16 3 3 -1.</_> + <_>8 17 3 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.1287907883524895e-003</threshold> + <left_val>0.6726329922676086</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 12 1 2 -1.</_> + <_>5 13 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.1682329932227731e-004</threshold> + <left_val>0.5041192770004273</left_val> + <right_val>0.3607729077339172</right_val></_></_> + <_> + <!-- tree 67 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 4 3 15 -1.</_> + <_>14 4 1 15 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0399094782769680</threshold> + <left_val>0.1563739031553268</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>17 3 2 6 -1.</_> + <_>18 3 1 3 2.</_> + <_>17 6 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.5859459526836872e-003</threshold> + <left_val>0.4891980886459351</left_val> + <right_val>0.5779845118522644</right_val></_></_> + <_> + <!-- tree 68 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 4 3 15 -1.</_> + <_>5 4 1 15 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0226902291178703</threshold> + <left_val>0.2186879068613052</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 3 2 6 -1.</_> + <_>1 3 1 3 2.</_> + <_>2 6 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0916070789098740e-003</threshold> + <left_val>0.4771577119827271</left_val> + <right_val>0.6099231243133545</right_val></_></_> + <_> + <!-- tree 69 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 15 12 4 -1.</_> + <_>7 17 12 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0247154198586941</threshold> + <left_val>0.3463996946811676</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 0 19 3 -1.</_> + <_>1 1 19 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0134194502606988</threshold> + <left_val>0.3630692958831787</left_val> + <right_val>0.5252196192741394</right_val></_></_> + <_> + <!-- tree 70 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 17 10 2 -1.</_> + <_>3 17 5 1 2.</_> + <_>8 18 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.0629472136497498e-003</threshold> + <left_val>0.6666321754455566</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 5 10 15 -1.</_> + <_>2 10 10 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.0921030081808567e-003</threshold> + <left_val>0.3399547040462494</left_val> + <right_val>0.5035697817802429</right_val></_></_> + <_> + <!-- tree 71 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 8 3 4 -1.</_> + <_>13 10 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0259618591517210</threshold> + <left_val>0.5036802887916565</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>19 13 1 2 -1.</_> + <_>19 14 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7908669542521238e-004</threshold> + <left_val>0.5418530702590942</left_val> + <right_val>0.4318976998329163</right_val></_></_> + <_> + <!-- tree 72 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 8 3 4 -1.</_> + <_>4 10 3 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.1546850223094225e-003</threshold> + <left_val>0.7221025228500366</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 13 1 2 -1.</_> + <_>0 14 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.1397759662941098e-003</threshold> + <left_val>0.3320972919464111</left_val> + <right_val>0.5024433732032776</right_val></_></_> + <_> + <!-- tree 73 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 7 2 12 -1.</_> + <_>12 13 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0478402115404606</threshold> + <left_val>0.1938765048980713</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 7 2 2 -1.</_> + <_>15 7 1 1 2.</_> + <_>14 8 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.1577088995836675e-004</threshold> + <left_val>0.4802188873291016</left_val> + <right_val>0.5730714797973633</right_val></_></_> + <_> + <!-- tree 74 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 3 8 2 -1.</_> + <_>5 4 8 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4247039477340877e-004</threshold> + <left_val>0.4262515008449554</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 2 2 6 -1.</_> + <_>0 4 2 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4479350065812469e-003</threshold> + <left_val>0.5719171166419983</left_val> + <right_val>0.4064153134822846</right_val></_></_> + <_> + <!-- tree 75 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 2 2 12 -1.</_> + <_>19 2 1 6 2.</_> + <_>18 8 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0157015100121498</threshold> + <left_val>0.4995726048946381</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>18 1 1 2 -1.</_> + <_>18 2 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.7805729769170284e-004</threshold> + <left_val>0.5289286971092224</left_val> + <right_val>0.4581728875637054</right_val></_></_> + <_> + <!-- tree 76 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 2 2 12 -1.</_> + <_>0 2 1 6 2.</_> + <_>1 8 1 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.9010509606450796e-003</threshold> + <left_val>0.6012148261070252</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 1 1 2 -1.</_> + <_>1 2 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.0830519497394562e-004</threshold> + <left_val>0.5057976841926575</left_val> + <right_val>0.3599432110786438</right_val></_></_> + <_> + <!-- tree 77 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>16 4 4 14 -1.</_> + <_>18 4 2 7 2.</_> + <_>16 11 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0515300296247005</threshold> + <left_node>1</left_node> + <right_val>0.4991796910762787</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 14 1 6 -1.</_> + <_>10 17 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.7163449956569821e-004</threshold> + <left_val>0.4675469994544983</left_val> + <right_val>0.5374773144721985</right_val></_></_> + <_> + <!-- tree 78 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 4 4 14 -1.</_> + <_>0 4 2 7 2.</_> + <_>2 11 2 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0236142799258232</threshold> + <left_node>1</left_node> + <right_val>0.6586478948593140</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 14 1 6 -1.</_> + <_>9 17 1 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.6427798699587584e-004</threshold> + <left_val>0.3853296041488648</left_val> + <right_val>0.5196040272712708</right_val></_></_> + <_> + <!-- tree 79 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 4 3 -1.</_> + <_>9 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.6903959959745407e-003</threshold> + <left_node>1</left_node> + <right_val>0.6004235744476318</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 12 2 -1.</_> + <_>8 7 4 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.8789530992507935e-003</threshold> + <left_val>0.3293227851390839</left_val> + <right_val>0.5245236754417419</right_val></_></_> + <_> + <!-- tree 80 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 8 4 3 -1.</_> + <_>0 9 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.8537332117557526e-003</threshold> + <left_val>0.2565914094448090</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 2 2 -1.</_> + <_>4 7 1 1 2.</_> + <_>5 8 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.9893810693174601e-004</threshold> + <left_val>0.4615494012832642</left_val> + <right_val>0.5942432284355164</right_val></_></_> + <_> + <!-- tree 81 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 7 2 1 -1.</_> + <_>13 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3354700058698654e-004</threshold> + <left_val>0.5487375855445862</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 4 4 5 -1.</_> + <_>11 4 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0165109997615218e-003</threshold> + <left_val>0.4578359127044678</left_val> + <right_val>0.5426927804946899</right_val></_></_> + <_> + <!-- tree 82 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 8 3 3 -1.</_> + <_>5 8 1 3 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>9.1216771397739649e-004</threshold> + <left_node>1</left_node> + <right_val>0.3939461112022400</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>0 3 8 1 -1.</_> + <_>4 3 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.0080259526148438e-003</threshold> + <left_val>0.4049789905548096</left_val> + <right_val>0.5520703792572022</right_val></_></_> + <_> + <!-- tree 83 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>13 7 2 1 -1.</_> + <_>13 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.3102490629535168e-004</threshold> + <left_node>1</left_node> + <right_val>0.4879088997840881</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 7 3 2 -1.</_> + <_>15 7 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.5228749988600612e-004</threshold> + <left_val>0.4844943881034851</left_val> + <right_val>0.5512825846672058</right_val></_></_> + <_> + <!-- tree 84 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 7 2 1 -1.</_> + <_>6 7 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2130969844292849e-004</threshold> + <left_node>1</left_node> + <right_val>0.4367971122264862</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>3 7 3 2 -1.</_> + <_>4 7 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.5112989785848185e-005</threshold> + <left_val>0.6425955295562744</left_val> + <right_val>0.4881826937198639</right_val></_></_> + <_> + <!-- tree 85 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>18 5 2 2 -1.</_> + <_>18 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.0125829400494695e-004</threshold> + <left_node>1</left_node> + <right_val>0.5372099280357361</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 14 2 2 -1.</_> + <_>13 14 1 1 2.</_> + <_>12 15 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.5766851184889674e-004</threshold> + <left_val>0.5834553241729736</left_val> + <right_val>0.4869078099727631</right_val></_></_> + <_> + <!-- tree 86 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>0 5 2 2 -1.</_> + <_>0 6 2 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.2220421386882663e-004</threshold> + <left_node>1</left_node> + <right_val>0.3824636936187744</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 14 2 2 -1.</_> + <_>6 14 1 1 2.</_> + <_>7 15 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.4663359615951777e-003</threshold> + <left_val>0.4813488125801086</left_val> + <right_val>0.6966739296913147</right_val></_></_> + <_> + <!-- tree 87 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 12 6 5 -1.</_> + <_>9 12 2 5 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0495477095246315</threshold> + <left_val>0.0539276599884033</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 17 5 2 -1.</_> + <_>12 18 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3017569435760379e-003</threshold> + <left_val>0.5337455868721008</left_val> + <right_val>0.4160748124122620</right_val></_></_> + <_> + <!-- tree 88 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 11 6 3 -1.</_> + <_>4 11 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.4914530590176582e-003</threshold> + <left_val>0.5997437238693237</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 9 6 3 -1.</_> + <_>4 9 3 3 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6592369647696614e-003</threshold> + <left_val>0.3727185130119324</left_val> + <right_val>0.5115634202957153</right_val></_></_> + <_> + <!-- tree 89 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 7 2 12 -1.</_> + <_>12 13 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.4695458859205246e-003</threshold> + <left_val>0.5252035260200501</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>8 7 5 3 -1.</_> + <_>8 8 5 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.9810269847512245e-003</threshold> + <left_val>0.5256717801094055</left_val> + <right_val>0.3934406042098999</right_val></_></_> + <_> + <!-- tree 90 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 7 2 12 -1.</_> + <_>6 13 2 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0385369807481766</threshold> + <left_val>0.2061924934387207</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 2 9 18 -1.</_> + <_>4 2 3 18 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.2827565073966980</threshold> + <left_val>0.0618832111358643</left_val> + <right_val>0.4925057888031006</right_val></_></_> + <_> + <!-- tree 91 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 17 5 2 -1.</_> + <_>12 18 5 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-9.0301828458905220e-003</threshold> + <left_val>0.3157590031623840</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 12 2 -1.</_> + <_>4 7 6 2 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0438662692904472</threshold> + <left_val>0.2033682018518448</left_val> + <right_val>0.5164769887924194</right_val></_></_> + <_> + <!-- tree 92 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>6 7 6 1 -1.</_> + <_>8 7 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5701069757342339e-003</threshold> + <left_val>0.6611183285713196</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>7 3 3 2 -1.</_> + <_>8 3 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3362410720437765e-003</threshold> + <left_val>0.2807789146900177</left_val> + <right_val>0.4962876141071320</right_val></_></_> + <_> + <!-- tree 93 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 4 3 1 -1.</_> + <_>10 4 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>5.3960331715643406e-003</threshold> + <left_val>0.5146387815475464</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>11 11 3 1 -1.</_> + <_>12 11 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.6297608856111765e-003</threshold> + <left_val>0.6284487843513489</left_val> + <right_val>0.4955588877201080</right_val></_></_> + <_> + <!-- tree 94 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>8 4 3 1 -1.</_> + <_>9 4 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-3.8577478844672441e-003</threshold> + <left_val>0.1486748009920120</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 11 3 1 -1.</_> + <_>7 11 1 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.3963800156489015e-003</threshold> + <left_val>0.4701338112354279</left_val> + <right_val>0.6320971846580505</right_val></_></_> + <_> + <!-- tree 95 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>12 13 6 6 -1.</_> + <_>12 15 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-8.8699469342827797e-003</threshold> + <left_node>1</left_node> + <right_val>0.5286818146705627</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>14 13 1 6 -1.</_> + <_>14 15 1 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-7.0626288652420044e-004</threshold> + <left_val>0.4648370146751404</left_val> + <right_val>0.5333210229873657</right_val></_></_> + <_> + <!-- tree 96 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>2 13 6 6 -1.</_> + <_>2 15 6 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.2645810171961784e-003</threshold> + <left_val>0.5084878206253052</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>1 5 18 1 -1.</_> + <_>7 5 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0615721009671688</threshold> + <left_val>0.3629625141620636</left_val> + <right_val>0.8757156729698181</right_val></_></_> + <_> + <!-- tree 97 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>4 7 12 2 -1.</_> + <_>10 7 6 1 2.</_> + <_>4 8 6 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.5381980016827583e-003</threshold> + <left_node>1</left_node> + <right_val>0.4856696128845215</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 1 8 10 -1.</_> + <_>10 1 4 5 2.</_> + <_>6 6 4 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.0877899155020714e-003</threshold> + <left_val>0.4584116041660309</left_val> + <right_val>0.5420240759849548</right_val></_></_> + <_> + <!-- tree 98 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>3 13 4 3 -1.</_> + <_>3 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.4308601431548595e-003</threshold> + <left_node>1</left_node> + <right_val>0.2707302868366242</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 13 4 3 -1.</_> + <_>6 14 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>7.0455260574817657e-003</threshold> + <left_val>0.5057486891746521</left_val> + <right_val>0.7026523947715759</right_val></_></_> + <_> + <!-- tree 99 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 14 4 3 -1.</_> + <_>9 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.3246440105140209e-003</threshold> + <left_node>1</left_node> + <right_val>0.4827278852462769</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 9 2 3 -1.</_> + <_>12 10 2 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0276601288933307e-005</threshold> + <left_val>0.4247249066829681</left_val> + <right_val>0.5508763194084168</right_val></_></_> + <_> + <!-- tree 100 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 14 4 3 -1.</_> + <_>7 15 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0180845595896244</threshold> + <left_node>1</left_node> + <right_val>0.8104801177978516</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>9 0 2 1 -1.</_> + <_>10 0 1 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.4693520329892635e-004</threshold> + <left_val>0.5154619216918945</left_val> + <right_val>0.3514379858970642</right_val></_></_> + <_> + <!-- tree 101 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 0 10 5 -1.</_> + <_>5 0 5 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0269310399889946</threshold> + <left_node>1</left_node> + <right_val>0.4886888861656189</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 6 8 7 -1.</_> + <_>6 6 4 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-4.2346641421318054e-003</threshold> + <left_val>0.4622378051280975</left_val> + <right_val>0.5382478237152100</right_val></_></_> + <_> + <!-- tree 102 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 0 10 5 -1.</_> + <_>10 0 5 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0269471108913422</threshold> + <left_node>1</left_node> + <right_val>0.6366596221923828</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>6 6 8 7 -1.</_> + <_>10 6 4 7 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>4.6446882188320160e-003</threshold> + <left_val>0.5368506908416748</left_val> + <right_val>0.3765429854393005</right_val></_></_> + <_> + <!-- tree 103 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 9 10 8 -1.</_> + <_>10 9 5 4 2.</_> + <_>5 13 5 4 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-6.9577661342918873e-003</threshold> + <left_val>0.4234687089920044</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>10 0 4 10 -1.</_> + <_>12 0 2 5 2.</_> + <_>10 5 2 5 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>8.7609712500125170e-004</threshold> + <left_val>0.4672406017780304</left_val> + <right_val>0.5350683927536011</right_val></_></_> + <_> + <!-- tree 104 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>1 4 8 3 -1.</_> + <_>1 5 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>1.6103329835459590e-003</threshold> + <left_node>1</left_node> + <right_val>0.5732762813568115</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 4 8 3 -1.</_> + <_>4 5 8 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-1.2848590267822146e-003</threshold> + <left_val>0.5481799244880676</left_val> + <right_val>0.3784593045711517</right_val></_></_> + <_> + <!-- tree 105 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>9 7 4 3 -1.</_> + <_>9 8 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>0.0102435396984220</threshold> + <left_val>0.5155907273292542</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>12 8 3 12 -1.</_> + <_>12 14 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>2.6889349101111293e-004</threshold> + <left_val>0.5353189706802368</left_val> + <right_val>0.4387153983116150</right_val></_></_> + <_> + <!-- tree 106 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>7 7 4 3 -1.</_> + <_>7 8 4 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>3.7903659977018833e-003</threshold> + <left_val>0.5032002925872803</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>5 8 3 12 -1.</_> + <_>5 14 3 6 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0293696802109480</threshold> + <left_val>0.5873538851737976</left_val> + <right_val>0.2215445041656494</right_val></_></_> + <_> + <!-- tree 107 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>10 0 7 6 -1.</_> + <_>10 2 7 2 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>6.0743088833987713e-003</threshold> + <left_node>1</left_node> + <right_val>0.5417029857635498</right_val></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>2 1 18 1 -1.</_> + <_>8 1 6 1 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-0.0127107203006744</threshold> + <left_val>0.6056511998176575</left_val> + <right_val>0.4985181987285614</right_val></_></_> + <_> + <!-- tree 108 --> + <_> + <!-- root node --> + <feature> + <rects> + <_>5 0 3 8 -1.</_> + <_>6 0 1 8 3.</_></rects> + <tilted>0</tilted></feature> + <threshold>-5.9445449151098728e-003</threshold> + <left_val>0.3352069854736328</left_val> + <right_node>1</right_node></_> + <_> + <!-- node 1 --> + <feature> + <rects> + <_>4 7 4 2 -1.</_> + <_>4 8 4 1 2.</_></rects> + <tilted>0</tilted></feature> + <threshold>-2.8927479870617390e-003</threshold> + <left_val>0.6929240822792053</left_val> + <right_val>0.4778220057487488</right_val></_></_></trees> + <stage_threshold>53.7555694580078130</stage_threshold> + <parent>18</parent> + <next>-1</next></_></stages></haarcascade_frontalface_alt2> +</opencv_storage> diff --git a/wagtail/wagtailimages/utils/feature_detection.py b/wagtail/wagtailimages/utils/feature_detection.py new file mode 100644 index 000000000..6381fabf7 --- /dev/null +++ b/wagtail/wagtailimages/utils/feature_detection.py @@ -0,0 +1,84 @@ +import os + +try: + import cv + + opencv_available = True +except ImportError: + try: + import cv2.cv as cv + + opencv_available = True + except ImportError: + opencv_available = False + + +from wagtail.wagtailimages.utils.focal_point import FocalPoint, combine_focal_points + + +class FeatureDetector(object): + def __init__(self, image_size, image_mode, image_data): + self.image_size = image_size + self.image_mode = image_mode + self.image_data = image_data + + def opencv_grey_image(self): + image = cv.CreateImageHeader(self.image_size, cv.IPL_DEPTH_8U, 3) + cv.SetData(image, self.image_data) + + gray_image = cv.CreateImage(self.image_size, 8, 1) + convert_mode = getattr(cv, 'CV_%s2GRAY' % self.image_mode) + cv.CvtColor(image, gray_image, convert_mode) + + return gray_image + + def detect_features(self): + if opencv_available: + image = self.opencv_grey_image() + rows = self.image_size[0] + cols = self.image_size[1] + + eig_image = cv.CreateMat(rows, cols, cv.CV_32FC1) + temp_image = cv.CreateMat(rows, cols, cv.CV_32FC1) + points = cv.GoodFeaturesToTrack(image, eig_image, temp_image, 20, 0.04, 1.0, useHarris=False) + + if points: + return [FocalPoint(x, y, 1) for x, y in points] + + return [] + + def detect_faces(self): + if opencv_available: + cascade_filename = os.path.join(os.path.dirname(__file__), 'face_detection', 'haarcascade_frontalface_alt2.xml') + cascade = cv.Load(cascade_filename) + image = self.opencv_grey_image() + + cv.EqualizeHist(image, image) + + min_size = (40, 40) + haar_scale = 1.1 + min_neighbors = 3 + haar_flags = 0 + + faces = cv.HaarDetectObjects( + image, cascade, cv.CreateMemStorage(0), + haar_scale, min_neighbors, haar_flags, min_size + ) + + if faces: + return [FocalPoint.from_square(face[0][0], face[0][1], face[0][2], face[0][3]) for face in faces] + + return [] + + def get_focal_point(self): + # Face detection + faces = self.detect_faces() + + if faces: + return combine_focal_points(faces) + + # Feature detection + features = self.detect_features() + + if features: + return combine_focal_points(features) diff --git a/wagtail/wagtailimages/utils/focal_point.py b/wagtail/wagtailimages/utils/focal_point.py new file mode 100644 index 000000000..55593db66 --- /dev/null +++ b/wagtail/wagtailimages/utils/focal_point.py @@ -0,0 +1,98 @@ +# https://github.com/thumbor/thumbor/blob/8a50bfba9443e8d2a1a691ab20eeb525815be597/thumbor/point.py + +# thumbor imaging service +# https://github.com/globocom/thumbor/wiki + +# Licensed under the MIT license: +# http://www.opensource.org/licenses/mit-license +# Copyright (c) 2011 globo.com timehome@corp.globo.com + + +class FocalPoint(object): + ALIGNMENT_PERCENTAGES = { + 'left': 0.0, + 'center': 0.5, + 'right': 1.0, + 'top': 0.0, + 'middle': 0.5, + 'bottom': 1.0 + } + + def to_dict(self): + return { + 'x': self.x, + 'y': self.y, + 'z': self.weight, + 'height': self.height, + 'width': self.width, + 'origin': self.origin + } + + @classmethod + def from_dict(cls, values): + return cls( + x=float(values['x']), + y=float(values['y']), + weight=float(values['z']), + width=float(values.get('width', 1)), + height=float(values.get('height', 1)), + origin=values.get('origin', 'alignment') + ) + + def __init__(self, x, y, height=1, width=1, weight=1.0, origin="alignment"): + self.x = x + self.y = y + self.height = height + self.width = width + self.weight = weight + self.origin = origin + + @classmethod + def from_square(cls, x, y, width, height, origin='detection'): + center_x = x + (width / 2) + center_y = y + (height / 2) + return cls(center_x, center_y, height=height, width=width, weight=width * height, origin=origin) + + @classmethod + def from_alignment(cls, halign, valign, width, height): + x = width * cls.ALIGNMENT_PERCENTAGES[halign] + y = height * cls.ALIGNMENT_PERCENTAGES[valign] + + return cls(x, y) + + def __repr__(self): + return 'FocalPoint(x: %d, y: %d, width: %d, height: %d, weight: %d, origin: %s)' % ( + self.x, self.y, self.width, self.height, self.weight, self.origin + ) + + def get_key(self): + return "%(x)d-%(y)d-%(width)dx%(height)d" % self.to_dict() + + +def combine_focal_points(focal_points): + # https://github.com/thumbor/thumbor/blob/fc75f2d617942e3548986fe8403ad717fc9978ba/thumbor/transformer.py#L255-L269 + if not focal_points: + return + + total_weight = 0.0 + total_x = 0.0 + total_y = 0.0 + + for focal_point in focal_points: + total_weight += focal_point.weight + + total_x += focal_point.x * focal_point.weight + total_y += focal_point.y * focal_point.weight + + x = total_x / total_weight + y = total_y / total_weight + + min_x = min([point.x - point.width / 2 for point in focal_points]) + min_y = min([point.y - point.height / 2 for point in focal_points]) + max_x = max([point.x + point.width / 2 for point in focal_points]) + max_y = max([point.y + point.height / 2 for point in focal_points]) + + width = max_x - min_x + height = max_y - min_y + + return FocalPoint(x, y, width=width, height=height, weight=total_weight) diff --git a/wagtail/wagtailimages/utils.py b/wagtail/wagtailimages/utils/validators.py similarity index 95% rename from wagtail/wagtailimages/utils.py rename to wagtail/wagtailimages/utils/validators.py index 4d10e2360..13604a88e 100644 --- a/wagtail/wagtailimages/utils.py +++ b/wagtail/wagtailimages/utils/validators.py @@ -3,7 +3,7 @@ import os from PIL import Image from django.core.exceptions import ValidationError -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext_lazy as _ def validate_image_format(f): @@ -33,3 +33,4 @@ def validate_image_format(f): # It is possible to upload PSD files if their extension is set to jpg, png or gif. This should catch them out if image.format.upper() != extension.upper(): raise ValidationError(_("Not a valid %s image. Please use a gif, jpeg or png file with the correct file extension (*.gif, *.jpg or *.png).") % (extension.upper())) + diff --git a/wagtail/wagtailimages/views/frontend.py b/wagtail/wagtailimages/views/frontend.py new file mode 100644 index 000000000..74ec8456f --- /dev/null +++ b/wagtail/wagtailimages/views/frontend.py @@ -0,0 +1,20 @@ +from django.shortcuts import get_object_or_404 +from django.http import HttpResponse +from django.core.exceptions import PermissionDenied +from django.views.decorators.cache import cache_page + +from wagtail.wagtailimages.models import get_image_model, Filter +from wagtail.wagtailimages.utils.crypto import verify_signature + + +@cache_page(60 * 60 * 24 * 60) # Cache for 60 days +def serve(request, signature, image_id, filter_spec): + image = get_object_or_404(get_image_model(), id=image_id) + + if not verify_signature(signature.encode(), image_id, filter_spec): + raise PermissionDenied + + try: + return Filter(spec=filter_spec).process_image(image.file.file, HttpResponse(content_type='image/jpeg'), focal_point=image.focal_point) + except Filter.InvalidFilterSpecError: + return HttpResponse("Invalid filter spec: " + filter_spec, content_type='text/plain', status=400) diff --git a/wagtail/wagtailimages/views/images.py b/wagtail/wagtailimages/views/images.py index 64f27dbda..27ad96a47 100644 --- a/wagtail/wagtailimages/views/images.py +++ b/wagtail/wagtailimages/views/images.py @@ -1,3 +1,5 @@ +import json + from django.shortcuts import render, redirect, get_object_or_404 from django.contrib import messages from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger @@ -5,11 +7,15 @@ from django.contrib.auth.decorators import permission_required from django.core.exceptions import PermissionDenied from django.utils.translation import ugettext as _ from django.views.decorators.vary import vary_on_headers +from django.core.urlresolvers import reverse, NoReverseMatch +from django.http import HttpResponse +from wagtail.wagtailcore.models import Site from wagtail.wagtailadmin.forms import SearchForm -from wagtail.wagtailimages.models import get_image_model -from wagtail.wagtailimages.forms import get_image_form +from wagtail.wagtailimages.models import get_image_model, Filter +from wagtail.wagtailimages.forms import get_image_form, URLGeneratorForm +from wagtail.wagtailimages.utils.crypto import generate_signature @permission_required('wagtailimages.add_image') @@ -32,7 +38,6 @@ def index(request): if form.is_valid(): query_string = form.cleaned_data['q'] - is_searching = True if not request.user.has_perm('wagtailimages.change_image'): # restrict to the user's own images images = Image.search(query_string, filters={'uploaded_by_user_id': request.user.id}) @@ -98,12 +103,79 @@ def edit(request, image_id): else: form = ImageForm(instance=image) + # Check if we should enable the frontend url generator + try: + reverse('wagtailimages_serve', args=('foo', '1', 'bar')) + url_generator_enabled = True + except NoReverseMatch: + url_generator_enabled = False + return render(request, "wagtailimages/images/edit.html", { 'image': image, 'form': form, + 'url_generator_enabled': url_generator_enabled, }) +@permission_required('wagtailadmin.access_admin') # more specific permission tests are applied within the view +def url_generator(request, image_id): + image = get_object_or_404(get_image_model(), id=image_id) + + if not image.is_editable_by_user(request.user): + raise PermissionDenied + + form = URLGeneratorForm(initial={ + 'filter_method': 'original', + 'width': image.width, + 'height': image.height, + }) + + return render(request, "wagtailimages/images/url_generator.html", { + 'image': image, + 'form': form, + }) + + +def json_response(document, status=200): + return HttpResponse(json.dumps(document), content_type='application/json', status=status) + + +@permission_required('wagtailadmin.access_admin') +def generate_url(request, image_id, filter_spec): + # Get the image + Image = get_image_model() + try: + image = Image.objects.get(id=image_id) + except Image.DoesNotExist: + return json_response({ + 'error': "Cannot find image." + }, status=404) + + # Check if this user has edit permission on this image + if not image.is_editable_by_user(request.user): + return json_response({ + 'error': "You do not have permission to generate a URL for this image." + }, status=403) + + # Parse the filter spec to make sure its valid + if not Filter(spec=filter_spec).is_valid(): + return json_response({ + 'error': "Invalid filter spec." + }, status=400) + + # Generate url + signature = generate_signature(image_id, filter_spec) + url = reverse('wagtailimages_serve', args=(signature, image_id, filter_spec)) + + # Get site root url + try: + site_root_url = Site.objects.get(is_default_site=True).root_url + except Site.DoesNotExist: + site_root_url = Site.objects.first().root_url + + return json_response({'url': site_root_url + url, 'local_url': url}, status=200) + + @permission_required('wagtailadmin.access_admin') # more specific permission tests are applied within the view def delete(request, image_id): image = get_object_or_404(get_image_model(), id=image_id) @@ -141,3 +213,24 @@ def add(request): return render(request, "wagtailimages/images/add.html", { 'form': form, }) + + +@permission_required('wagtailadmin.access_admin') +def usage(request, image_id): + image = get_object_or_404(get_image_model(), id=image_id) + + # Pagination + p = request.GET.get('p', 1) + paginator = Paginator(image.get_usage(), 20) + + try: + used_by = paginator.page(p) + except PageNotAnInteger: + used_by = paginator.page(1) + except EmptyPage: + used_by = paginator.page(paginator.num_pages) + + return render(request, "wagtailimages/images/usage.html", { + 'image': image, + 'used_by': used_by + }) diff --git a/wagtail/wagtailimages/views/multiple.py b/wagtail/wagtailimages/views/multiple.py index 7a3702625..5bc76fa7c 100644 --- a/wagtail/wagtailimages/views/multiple.py +++ b/wagtail/wagtailimages/views/multiple.py @@ -12,7 +12,7 @@ from django.utils.translation import ugettext as _ from wagtail.wagtailimages.models import get_image_model from wagtail.wagtailimages.forms import get_image_form_for_multi -from wagtail.wagtailimages.utils import validate_image_format +from wagtail.wagtailimages.utils.validators import validate_image_format def json_response(document): diff --git a/wagtail/wagtailimages/wagtail_hooks.py b/wagtail/wagtailimages/wagtail_hooks.py index 90ba83d37..b4f2bac19 100644 --- a/wagtail/wagtailimages/wagtail_hooks.py +++ b/wagtail/wagtailimages/wagtail_hooks.py @@ -1,24 +1,64 @@ from django.conf import settings from django.conf.urls import include, url from django.core import urlresolvers +from django.core.exceptions import ImproperlyConfigured from django.utils.html import format_html, format_html_join from django.utils.translation import ugettext_lazy as _ from wagtail.wagtailcore import hooks from wagtail.wagtailadmin.menu import MenuItem -from wagtail.wagtailimages import urls +from wagtail.wagtailimages import admin_urls @hooks.register('register_admin_urls') def register_admin_urls(): return [ - url(r'^images/', include(urls)), + url(r'^images/', include(admin_urls)), ] +# Check for the presence of a pre-Wagtail-0.3-style urlconf, and fail loudly if one is found. +# Prior to Wagtail 0.3, the standard Wagtail urls.py contained an entry for +# wagtail.wagtailimages.urls rooted at '/admin/images/' or equivalent. As of Wagtail 0.5, +# the wagtailimages admin views are defined by wagtail.wagtailimages.admin_urls, and +# wagtail.wagtailimages.urls is used for front-end views instead - which means that those URLs +# will clash with the admin. +# This check can only be performed after the ROOT_URLCONF module has been fully imported. Since +# importing a urlconf module generally involves recursively importing a whole load of other things +# including models.py and wagtail_hooks.py, there is no obvious place to put this code at the +# module level without causing a circular import. We therefore put it in construct_main_menu, which +# is run frequently enough to ensure that the error message will not be missed. Yes, it's hacky :-( + +OLD_STYLE_URLCONF_CHECK_PASSED = False +def check_old_style_urlconf(): + global OLD_STYLE_URLCONF_CHECK_PASSED + + # A faulty urls.py will place wagtail.wagtailimages.urls at the same path that + # wagtail.wagtailimages.admin_urls is loaded to, resulting in the wagtailimages_serve path + # being equal to wagtailimages_index followed by three arbitrary args + try: + wagtailimages_serve_path = urlresolvers.reverse('wagtailimages_serve', args = ['123', '456', '789']) + except urlresolvers.NoReverseMatch: + # wagtailimages_serve is not defined at all, so there's no collision + OLD_STYLE_URLCONF_CHECK_PASSED = True + return + + wagtailimages_index_path = urlresolvers.reverse('wagtailimages_index') + if wagtailimages_serve_path == wagtailimages_index_path + '123/456/789/': + raise ImproperlyConfigured("""Your urls.py contains an entry for %s that needs to be removed. + See http://wagtail.readthedocs.org/en/latest/releases/0.5.html#urlconf-entries-for-admin-images-admin-embeds-etc-need-to-be-removed""" + % wagtailimages_index_path + ) + else: + OLD_STYLE_URLCONF_CHECK_PASSED = True + + @hooks.register('construct_main_menu') def construct_main_menu(request, menu_items): + if not OLD_STYLE_URLCONF_CHECK_PASSED: + check_old_style_urlconf() + if request.user.has_perm('wagtailimages.add_image'): menu_items.append( MenuItem(_('Images'), urlresolvers.reverse('wagtailimages_index'), classnames='icon icon-image', order=300) diff --git a/wagtail/wagtailredirects/locale/bg/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/bg/LC_MESSAGES/django.mo index 03eef3c99..17da54257 100644 Binary files a/wagtail/wagtailredirects/locale/bg/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/bg/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/bg/LC_MESSAGES/django.po index ffbced366..11ee5d379 100644 --- a/wagtail/wagtailredirects/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/bg/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" @@ -69,7 +69,7 @@ msgstr "Пренасочването '{0}' добавено." msgid "The redirect could not be created due to errors." msgstr "Пренасочването не можеше да бъде създадено поради грешки." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Пренасочвания" diff --git a/wagtail/wagtailredirects/locale/ca/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/ca/LC_MESSAGES/django.mo index 549a98df8..a9543f66d 100644 Binary files a/wagtail/wagtailredirects/locale/ca/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/ca/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/ca/LC_MESSAGES/django.po index 26c3931d2..53882f99c 100644 --- a/wagtail/wagtailredirects/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/ca/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:59+0000\n" "Last-Translator: Lloople <d.lloople@gmail.com>\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" @@ -69,7 +69,7 @@ msgstr "Redireccionament '{0}' afegit." msgid "The redirect could not be created due to errors." msgstr "No s'ha pogut crear el redireccionament." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Redireccions" diff --git a/wagtail/wagtailredirects/locale/de/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/de/LC_MESSAGES/django.mo index a14456d56..a698340c8 100644 Binary files a/wagtail/wagtailredirects/locale/de/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/de/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/de/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/de/LC_MESSAGES/django.po index 3b1171921..b0937da4b 100644 --- a/wagtail/wagtailredirects/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/de/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-24 19:01+0000\n" "Last-Translator: pcraston <patrick@craston.com>\n" "Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" @@ -71,7 +71,7 @@ msgstr "Weiterleitung '{0}' hinzugefügt." msgid "The redirect could not be created due to errors." msgstr "Aufgrund von Fehlern konnte die Weiterleitung nicht erstellt werden." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Weiterleitungen" diff --git a/wagtail/wagtailredirects/locale/el/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/el/LC_MESSAGES/django.mo index 317a7bba8..a7530f4bf 100644 Binary files a/wagtail/wagtailredirects/locale/el/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/el/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/el/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/el/LC_MESSAGES/django.po index 1aa6bf7b6..a20fde9f9 100644 --- a/wagtail/wagtailredirects/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/el/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:16+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" @@ -69,7 +69,7 @@ msgstr "Η ανακατεύθυνση '{0}' προστέθηκε." msgid "The redirect could not be created due to errors." msgstr "Δεν ήταν δυνατή η δημιουργία της ανακατεύθυνσης." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Ανακατευθύνει" diff --git a/wagtail/wagtailredirects/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/en/LC_MESSAGES/django.mo index 4b726f7d6..44e531ab0 100644 Binary files a/wagtail/wagtailredirects/locale/en/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/en/LC_MESSAGES/django.po index b7e87b086..6a3b4fc05 100644 --- a/wagtail/wagtailredirects/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+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" @@ -63,7 +63,7 @@ msgstr "" msgid "The redirect could not be created due to errors." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "" diff --git a/wagtail/wagtailredirects/locale/es/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/es/LC_MESSAGES/django.mo index 52afcb92c..ef1d3a7bf 100644 Binary files a/wagtail/wagtailredirects/locale/es/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/es/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/es/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/es/LC_MESSAGES/django.po index 0f9cec052..5eae66a50 100644 --- a/wagtail/wagtailredirects/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/es/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-23 10:21+0000\n" "Last-Translator: fooflare <amos.oviedo@gmail.com>\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" @@ -70,7 +70,7 @@ msgstr "Redirección '{0}' añadida." msgid "The redirect could not be created due to errors." msgstr "La redirección no puede ser creada debido a errores." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Redirecciona" diff --git a/wagtail/wagtailredirects/locale/eu/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/eu/LC_MESSAGES/django.mo index f5afff9e4..059c50fbc 100644 Binary files a/wagtail/wagtailredirects/locale/eu/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/eu/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/eu/LC_MESSAGES/django.po index d7bbbe401..f2336f56b 100644 --- a/wagtail/wagtailredirects/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/eu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" @@ -64,7 +64,7 @@ msgstr "" msgid "The redirect could not be created due to errors." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "" diff --git a/wagtail/wagtailredirects/locale/fr/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/fr/LC_MESSAGES/django.mo index 182b4cef7..5cc019daf 100644 Binary files a/wagtail/wagtailredirects/locale/fr/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/fr/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/fr/LC_MESSAGES/django.po index 047a9c754..a88294e24 100644 --- a/wagtail/wagtailredirects/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-18 23:07+0000\n" "Last-Translator: nahuel\n" "Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" @@ -69,7 +69,7 @@ msgstr "Redirection '{0} ajoutée." msgid "The redirect could not be created due to errors." msgstr "La redirection ne peut être créé du fait d'erreurs." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Redirections" diff --git a/wagtail/wagtailredirects/locale/gl/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/gl/LC_MESSAGES/django.mo index 93e89b3fd..0417c9ae8 100644 Binary files a/wagtail/wagtailredirects/locale/gl/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/gl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/gl/LC_MESSAGES/django.po index 40788394e..a0a877ef8 100644 --- a/wagtail/wagtailredirects/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/gl/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-23 10:32+0000\n" "Last-Translator: fooflare <amos.oviedo@gmail.com>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" @@ -70,7 +70,7 @@ msgstr "Redirección '{0}' engadida." msgid "The redirect could not be created due to errors." msgstr "A redirección non pede ser creada debido a erros." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Redirecciona" diff --git a/wagtail/wagtailredirects/locale/mn/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/mn/LC_MESSAGES/django.mo index 4d78adf19..a610b6cd7 100644 Binary files a/wagtail/wagtailredirects/locale/mn/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/mn/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/mn/LC_MESSAGES/django.po index 32dc9b4fb..8fe2a3670 100644 --- a/wagtail/wagtailredirects/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/mn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" @@ -64,7 +64,7 @@ msgstr "" msgid "The redirect could not be created due to errors." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "" diff --git a/wagtail/wagtailredirects/locale/pl/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/pl/LC_MESSAGES/django.mo index 58c18567f..c499702f0 100644 Binary files a/wagtail/wagtailredirects/locale/pl/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/pl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/pl/LC_MESSAGES/django.po index 7903d29c7..5a89ebb3f 100644 --- a/wagtail/wagtailredirects/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/pl/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 22:16+0000\n" "Last-Translator: utek <mail@utek.pl>\n" "Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" @@ -70,7 +70,7 @@ msgstr "Dodano przekierowanie '{0}'." msgid "The redirect could not be created due to errors." msgstr "Przekierowanie nie mogło zostać stworzone z powodu błędów." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Przekierowania" diff --git a/wagtail/wagtailredirects/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..e6fb7e2b6 Binary files /dev/null and b/wagtail/wagtailredirects/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..759a4906a --- /dev/null +++ b/wagtail/wagtailredirects/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,169 @@ +# 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. +# +# Translators: +# Thiago Cangussu <cangussu.thg@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-03 01:56+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" +"Language: pt_PT\n" + +#: models.py:10 +msgid "Redirect from" +msgstr "Redirecionar de" + +#: models.py:12 +msgid "Permanent" +msgstr "Permanente" + +#: models.py:12 +msgid "" +"Recommended. Permanent redirects ensure search engines forget the old page " +"(the 'Redirect from') and index the new page instead." +msgstr "" +"Recomendado. Redirecionamentos permanentes garantem que os motores de busca " +"esqueçam a página antiga (o 'Redirecionar de') e indexem a nova página." + +#: models.py:13 +msgid "Redirect to a page" +msgstr "Redirecionar para uma página" + +#: models.py:14 +msgid "Redirect to any URL" +msgstr "Redirecionar para qualquer URL" + +#: views.py:58 +msgid "Search redirects" +msgstr "Procurar redireções" + +#: views.py:71 +msgid "Redirect '{0}' updated." +msgstr "Redireção '{0}' atualizada." + +#: views.py:74 +msgid "The redirect could not be saved due to errors." +msgstr "A redireção não pôde ser guardada devido a erros." + +#: views.py:92 +msgid "Redirect '{0}' deleted." +msgstr "Redireção '{0}' eliminada." + +#: views.py:112 +msgid "Redirect '{0}' added." +msgstr "Redireção '{0}' adicionada." + +#: views.py:115 +msgid "The redirect could not be created due to errors." +msgstr "A redireção não pôde ser criada devido a erros." + +#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: templates/wagtailredirects/index.html:17 +msgid "Redirects" +msgstr "Redireções" + +#: templates/wagtailredirects/add.html:3 templates/wagtailredirects/add.html:6 +#: templates/wagtailredirects/index.html:18 +msgid "Add redirect" +msgstr "Adicionar redireção" + +#: templates/wagtailredirects/add.html:14 +#: templates/wagtailredirects/edit.html:14 +msgid "Save" +msgstr "Guardar" + +#: templates/wagtailredirects/confirm_delete.html:4 +#, python-format +msgid "Delete redirect %(title)s" +msgstr "Eliminar redireção %(title)s" + +#: templates/wagtailredirects/confirm_delete.html:6 +msgid "Delete" +msgstr "Eliminar" + +#: templates/wagtailredirects/confirm_delete.html:10 +msgid "Are you sure you want to delete this redirect?" +msgstr "Tem a certeza que pretende eliminar esta redireção?" + +#: templates/wagtailredirects/confirm_delete.html:13 +msgid "Yes, delete" +msgstr "Sim, eliminar" + +#: templates/wagtailredirects/edit.html:4 +#, python-format +msgid "Editing %(title)s" +msgstr "Editando %(title)s" + +#: templates/wagtailredirects/edit.html:6 +msgid "Editing" +msgstr "Editando" + +#: templates/wagtailredirects/edit.html:15 +msgid "Delete redirect" +msgstr "Eliminar redireção" + +#: templates/wagtailredirects/list.html:11 +#: templates/wagtailredirects/list.html:14 +msgid "From" +msgstr "De" + +#: templates/wagtailredirects/list.html:17 +msgid "To" +msgstr "Para" + +#: templates/wagtailredirects/list.html:18 +msgid "Type" +msgstr "Tipo" + +#: templates/wagtailredirects/list.html:25 +msgid "Edit this redirect" +msgstr "Editar esta redireção" + +#: templates/wagtailredirects/list.html:34 +msgid "primary" +msgstr "principal" + +#: templates/wagtailredirects/results.html:5 +#, python-format +msgid "" +"\n" +" There is one match\n" +" " +msgid_plural "" +"\n" +" There are %(counter)s matches\n" +" " +msgstr[0] "" +"\n" +" Existe uma correspondência\n" +" " +msgstr[1] "" +"\n" +" Existem %(counter)s correspondências\n" +" " + +#: templates/wagtailredirects/results.html:18 +#, python-format +msgid "Sorry, no redirects match \"<em>%(query_string)s</em>\"" +msgstr "" +"Desculpe, nenhuma redireção corresponde a \"<em>%(query_string)s</em>\"" + +#: templates/wagtailredirects/results.html:21 +#, python-format +msgid "" +"No redirects have been created. Why not <a href=" +"\"%(wagtailredirects_add_redirect_url)s\">add one</a>?" +msgstr "" +"Nenhuma redireção foi criada. Porque não <a href=" +"\"%(wagtailredirects_add_redirect_url)s\">adicionar uma</a>?" diff --git a/wagtail/wagtailredirects/locale/ro/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/ro/LC_MESSAGES/django.mo index e77d11cf3..aa780a3b0 100644 Binary files a/wagtail/wagtailredirects/locale/ro/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/ro/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/ro/LC_MESSAGES/django.po index b6ec29d81..f248a3e8f 100644 --- a/wagtail/wagtailredirects/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/ro/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-18 13:21+0000\n" "Last-Translator: zerolab\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" @@ -69,7 +69,7 @@ msgstr "Redirecționarea '{0}' a fost adăugată." msgid "The redirect could not be created due to errors." msgstr "Redirecționarea nu a fost creată din cauza erorilor." -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "Redirecționări" diff --git a/wagtail/wagtailredirects/locale/zh/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/zh/LC_MESSAGES/django.mo index 2bd56a1c4..1f4c36355 100644 Binary files a/wagtail/wagtailredirects/locale/zh/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/zh/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/zh/LC_MESSAGES/django.po index d996eb145..7b7787add 100644 --- a/wagtail/wagtailredirects/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" @@ -65,7 +65,7 @@ msgstr "转向 '{0}' 已添加" msgid "The redirect could not be created due to errors." msgstr "由于多个错误,转向设置无法创建。" -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "转向" diff --git a/wagtail/wagtailredirects/locale/zh_TW/LC_MESSAGES/django.mo b/wagtail/wagtailredirects/locale/zh_TW/LC_MESSAGES/django.mo index b5f8e50b3..22ccda07a 100644 Binary files a/wagtail/wagtailredirects/locale/zh_TW/LC_MESSAGES/django.mo and b/wagtail/wagtailredirects/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailredirects/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtailredirects/locale/zh_TW/LC_MESSAGES/django.po index 0e909ea5c..9c8175de3 100644 --- a/wagtail/wagtailredirects/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtailredirects/locale/zh_TW/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:47+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" @@ -66,7 +66,7 @@ msgstr "重導向 '{0}' 已加入" msgid "The redirect could not be created due to errors." msgstr "重導向因有錯誤而無法建立。" -#: wagtail_hooks.py:22 templates/wagtailredirects/index.html:3 +#: wagtail_hooks.py:23 templates/wagtailredirects/index.html:3 #: templates/wagtailredirects/index.html:17 msgid "Redirects" msgstr "重導向" diff --git a/wagtail/wagtailsearch/__init__.py b/wagtail/wagtailsearch/__init__.py index 8f53f7c4a..0e24694be 100644 --- a/wagtail/wagtailsearch/__init__.py +++ b/wagtail/wagtailsearch/__init__.py @@ -1,4 +1,4 @@ -from wagtail.wagtailsearch.indexed import Indexed +from wagtail.wagtailsearch.index import Indexed from wagtail.wagtailsearch.signal_handlers import register_signal_handlers from wagtail.wagtailsearch.backends import get_search_backend diff --git a/wagtail/wagtailsearch/backends/base.py b/wagtail/wagtailsearch/backends/base.py index 82e2e8d56..1928a7bbe 100644 --- a/wagtail/wagtailsearch/backends/base.py +++ b/wagtail/wagtailsearch/backends/base.py @@ -2,7 +2,7 @@ from django.db import models from django.db.models.query import QuerySet from django.core.exceptions import ImproperlyConfigured -from wagtail.wagtailsearch.indexed import Indexed +from wagtail.wagtailsearch.index import Indexed from wagtail.wagtailsearch.utils import normalise_query_string diff --git a/wagtail/wagtailsearch/backends/db.py b/wagtail/wagtailsearch/backends/db.py index a94fe3c58..3f7e64f42 100644 --- a/wagtail/wagtailsearch/backends/db.py +++ b/wagtail/wagtailsearch/backends/db.py @@ -1,7 +1,6 @@ from django.db import models from wagtail.wagtailsearch.backends.base import BaseSearch -from wagtail.wagtailsearch.indexed import Indexed class DBSearch(BaseSearch): diff --git a/wagtail/wagtailsearch/backends/elasticsearch.py b/wagtail/wagtailsearch/backends/elasticsearch.py index 9e0d9b612..341cc342e 100644 --- a/wagtail/wagtailsearch/backends/elasticsearch.py +++ b/wagtail/wagtailsearch/backends/elasticsearch.py @@ -17,7 +17,7 @@ from elasticsearch import Elasticsearch, NotFoundError, RequestError from elasticsearch.helpers import bulk from wagtail.wagtailsearch.backends.base import BaseSearch -from wagtail.wagtailsearch.indexed import Indexed, SearchField, FilterField +from wagtail.wagtailsearch.index import Indexed, SearchField, FilterField class ElasticSearchMapping(object): diff --git a/wagtail/wagtailsearch/index.py b/wagtail/wagtailsearch/index.py new file mode 100644 index 000000000..e775ff5c7 --- /dev/null +++ b/wagtail/wagtailsearch/index.py @@ -0,0 +1,182 @@ +import warnings + +from six import string_types + +from django.db import models + +from wagtail.utils.deprecation import RemovedInWagtail06Warning + + +class Indexed(object): + @classmethod + def indexed_get_parent(cls, require_model=True): + for base in cls.__bases__: + if issubclass(base, Indexed) and (issubclass(base, models.Model) or require_model is False): + return base + + @classmethod + def indexed_get_content_type(cls): + # Work out content type + content_type = (cls._meta.app_label + '_' + cls.__name__).lower() + + # Get parent content type + parent = cls.indexed_get_parent() + if parent: + parent_content_type = parent.indexed_get_content_type() + return parent_content_type + '_' + content_type + else: + return content_type + + @classmethod + def indexed_get_toplevel_content_type(cls): + # Get parent content type + parent = cls.indexed_get_parent() + if parent: + return parent.indexed_get_content_type() + else: + # At toplevel, return this content type + return (cls._meta.app_label + '_' + cls.__name__).lower() + + @classmethod + def indexed_get_indexed_fields(cls): + # Get indexed fields for this class as dictionary + indexed_fields = cls.indexed_fields + if isinstance(indexed_fields, dict): + # Make sure we have a copy to prevent us accidentally changing the configuration + indexed_fields = indexed_fields.copy() + else: + # Convert to dict + if isinstance(indexed_fields, tuple): + indexed_fields = list(indexed_fields) + if isinstance(indexed_fields, string_types): + indexed_fields = [indexed_fields] + if isinstance(indexed_fields, list): + indexed_fields = dict((field, dict(type='string')) for field in indexed_fields) + if not isinstance(indexed_fields, dict): + raise ValueError() + + # Get indexed fields for parent class + parent = cls.indexed_get_parent(require_model=False) + if parent: + # Add parent fields into this list + parent_indexed_fields = parent.indexed_get_indexed_fields().copy() + parent_indexed_fields.update(indexed_fields) + indexed_fields = parent_indexed_fields + return indexed_fields + + @classmethod + def get_search_fields(cls): + search_fields = [] + + if hasattr(cls, 'search_fields'): + search_fields.extend(cls.search_fields) + + # Backwards compatibility with old indexed_fields setting + + # Get indexed fields + indexed_fields = cls.indexed_get_indexed_fields() + + # Display deprecation warning if indexed_fields has been used + if indexed_fields: + warnings.warn("'indexed_fields' setting is now deprecated." + "Use 'search_fields' instead.", RemovedInWagtail06Warning) + + # Convert them into search fields + for field_name, _config in indexed_fields.items(): + # Copy the config to prevent is trashing anything accidentally + config = _config.copy() + + # Check if this is a filter field + if config.get('index', None) == 'not_analyzed': + config.pop('index') + search_fields.append(FilterField(field_name, es_extra=config)) + continue + + # Must be a search field, check for boosting and partial matching + boost = config.pop('boost', None) + + partial_match = False + if config.get('analyzer', None) == 'edgengram_analyzer': + partial_match = True + config.pop('analyzer') + + # Add the field + search_fields.append(SearchField(field_name, boost=boost, partial_match=partial_match, es_extra=config)) + + # Remove any duplicate entries into search fields + # We need to take into account that fields can be indexed as both a SearchField and as a FilterField + search_fields_dict = {} + for field in search_fields: + search_fields_dict[(field.field_name, type(field))] = field + search_fields = search_fields_dict.values() + + return search_fields + + @classmethod + def get_searchable_search_fields(cls): + return filter(lambda field: isinstance(field, SearchField), cls.get_search_fields()) + + @classmethod + def get_filterable_search_fields(cls): + return filter(lambda field: isinstance(field, FilterField), cls.get_search_fields()) + + @classmethod + def get_indexed_objects(cls): + return cls.objects.all() + + indexed_fields = () + + +class BaseField(object): + suffix = '' + + def __init__(self, field_name, **kwargs): + self.field_name = field_name + self.kwargs = kwargs + + def get_field(self, cls): + return cls._meta.get_field_by_name(self.field_name)[0] + + def get_attname(self, cls): + try: + field = self.get_field(cls) + return field.attname + except models.fields.FieldDoesNotExist: + return self.field_name + + def get_index_name(self, cls): + return self.get_attname(cls) + self.suffix + + def get_type(self, cls): + if 'type' in self.kwargs: + return self.kwargs['type'] + + try: + field = self.get_field(cls) + return field.get_internal_type() + except models.fields.FieldDoesNotExist: + return 'CharField' + + def get_value(self, obj): + try: + field = self.get_field(obj.__class__) + return field._get_val_from_obj(obj) + except models.fields.FieldDoesNotExist: + value = getattr(obj, self.field_name, None) + if hasattr(value, '__call__'): + value = value() + return value + + def __repr__(self): + return '<%s: %s>' % (self.__class__.__name__, self.field_name) + + +class SearchField(BaseField): + def __init__(self, field_name, boost=None, partial_match=False, **kwargs): + super(SearchField, self).__init__(field_name, **kwargs) + self.boost = boost + self.partial_match = partial_match + + +class FilterField(BaseField): + suffix = '_filter' diff --git a/wagtail/wagtailsearch/indexed.py b/wagtail/wagtailsearch/indexed.py index e775ff5c7..4ff8e7ba0 100644 --- a/wagtail/wagtailsearch/indexed.py +++ b/wagtail/wagtailsearch/indexed.py @@ -1,182 +1,11 @@ import warnings -from six import string_types - -from django.db import models - -from wagtail.utils.deprecation import RemovedInWagtail06Warning +from wagtail.utils.deprecation import RemovedInWagtail08Warning -class Indexed(object): - @classmethod - def indexed_get_parent(cls, require_model=True): - for base in cls.__bases__: - if issubclass(base, Indexed) and (issubclass(base, models.Model) or require_model is False): - return base - - @classmethod - def indexed_get_content_type(cls): - # Work out content type - content_type = (cls._meta.app_label + '_' + cls.__name__).lower() - - # Get parent content type - parent = cls.indexed_get_parent() - if parent: - parent_content_type = parent.indexed_get_content_type() - return parent_content_type + '_' + content_type - else: - return content_type - - @classmethod - def indexed_get_toplevel_content_type(cls): - # Get parent content type - parent = cls.indexed_get_parent() - if parent: - return parent.indexed_get_content_type() - else: - # At toplevel, return this content type - return (cls._meta.app_label + '_' + cls.__name__).lower() - - @classmethod - def indexed_get_indexed_fields(cls): - # Get indexed fields for this class as dictionary - indexed_fields = cls.indexed_fields - if isinstance(indexed_fields, dict): - # Make sure we have a copy to prevent us accidentally changing the configuration - indexed_fields = indexed_fields.copy() - else: - # Convert to dict - if isinstance(indexed_fields, tuple): - indexed_fields = list(indexed_fields) - if isinstance(indexed_fields, string_types): - indexed_fields = [indexed_fields] - if isinstance(indexed_fields, list): - indexed_fields = dict((field, dict(type='string')) for field in indexed_fields) - if not isinstance(indexed_fields, dict): - raise ValueError() - - # Get indexed fields for parent class - parent = cls.indexed_get_parent(require_model=False) - if parent: - # Add parent fields into this list - parent_indexed_fields = parent.indexed_get_indexed_fields().copy() - parent_indexed_fields.update(indexed_fields) - indexed_fields = parent_indexed_fields - return indexed_fields - - @classmethod - def get_search_fields(cls): - search_fields = [] - - if hasattr(cls, 'search_fields'): - search_fields.extend(cls.search_fields) - - # Backwards compatibility with old indexed_fields setting - - # Get indexed fields - indexed_fields = cls.indexed_get_indexed_fields() - - # Display deprecation warning if indexed_fields has been used - if indexed_fields: - warnings.warn("'indexed_fields' setting is now deprecated." - "Use 'search_fields' instead.", RemovedInWagtail06Warning) - - # Convert them into search fields - for field_name, _config in indexed_fields.items(): - # Copy the config to prevent is trashing anything accidentally - config = _config.copy() - - # Check if this is a filter field - if config.get('index', None) == 'not_analyzed': - config.pop('index') - search_fields.append(FilterField(field_name, es_extra=config)) - continue - - # Must be a search field, check for boosting and partial matching - boost = config.pop('boost', None) - - partial_match = False - if config.get('analyzer', None) == 'edgengram_analyzer': - partial_match = True - config.pop('analyzer') - - # Add the field - search_fields.append(SearchField(field_name, boost=boost, partial_match=partial_match, es_extra=config)) - - # Remove any duplicate entries into search fields - # We need to take into account that fields can be indexed as both a SearchField and as a FilterField - search_fields_dict = {} - for field in search_fields: - search_fields_dict[(field.field_name, type(field))] = field - search_fields = search_fields_dict.values() - - return search_fields - - @classmethod - def get_searchable_search_fields(cls): - return filter(lambda field: isinstance(field, SearchField), cls.get_search_fields()) - - @classmethod - def get_filterable_search_fields(cls): - return filter(lambda field: isinstance(field, FilterField), cls.get_search_fields()) - - @classmethod - def get_indexed_objects(cls): - return cls.objects.all() - - indexed_fields = () +warnings.warn( + "The wagtail.wagtailsearch.indexed module has been renamed. " + "Use wagtail.wagtailsearch.index instead.", RemovedInWagtail08Warning) -class BaseField(object): - suffix = '' - - def __init__(self, field_name, **kwargs): - self.field_name = field_name - self.kwargs = kwargs - - def get_field(self, cls): - return cls._meta.get_field_by_name(self.field_name)[0] - - def get_attname(self, cls): - try: - field = self.get_field(cls) - return field.attname - except models.fields.FieldDoesNotExist: - return self.field_name - - def get_index_name(self, cls): - return self.get_attname(cls) + self.suffix - - def get_type(self, cls): - if 'type' in self.kwargs: - return self.kwargs['type'] - - try: - field = self.get_field(cls) - return field.get_internal_type() - except models.fields.FieldDoesNotExist: - return 'CharField' - - def get_value(self, obj): - try: - field = self.get_field(obj.__class__) - return field._get_val_from_obj(obj) - except models.fields.FieldDoesNotExist: - value = getattr(obj, self.field_name, None) - if hasattr(value, '__call__'): - value = value() - return value - - def __repr__(self): - return '<%s: %s>' % (self.__class__.__name__, self.field_name) - - -class SearchField(BaseField): - def __init__(self, field_name, boost=None, partial_match=False, **kwargs): - super(SearchField, self).__init__(field_name, **kwargs) - self.boost = boost - self.partial_match = partial_match - - -class FilterField(BaseField): - suffix = '_filter' +from .index import * diff --git a/wagtail/wagtailsearch/locale/bg/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/bg/LC_MESSAGES/django.mo index 8ec314309..8631753d8 100644 Binary files a/wagtail/wagtailsearch/locale/bg/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/bg/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/bg/LC_MESSAGES/django.po index 3bddd3064..c63ffe52b 100644 --- a/wagtail/wagtailsearch/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/bg/LC_MESSAGES/django.po @@ -1,22 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# LyuboslavPetrov <petrov.lyuboslav@gmail.com>, 2014 +# Lyuboslav Petrov <petrov.lyuboslav@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" -"language/bg/)\n" -"Language: bg\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/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" #: forms.py:9 @@ -28,16 +27,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"Въведете целият стринг. Точно \n" -" съвпадение е нужно за вашите \"Избрано от Редактора\" \n" -" да бъдат показани, като wildcards НЕ са позволени." +msgstr "Въведете целият стринг. Точно \n съвпадение е нужно за вашите \"Избрано от Редактора\" \n да бъдат показани, като wildcards НЕ са позволени." #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "Избрано от Редактора" @@ -46,34 +42,21 @@ msgstr "Избрано от Редактора" msgid "Add editor's pick" msgstr "Добави \"Избрано от Редактора\"" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -" <p>\"Избор на Редактора\" са средство за препоръчване на специфични " -"страници, които не биха могли да дойдат по нормален начин високо в " -"резултатите от търсенето. Например, препоръка към основната ви страница за " -"дарения на потребителско търсене с по-малко общ термин като \"<em> даде </em>" -"\". </p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Запази" @@ -90,10 +73,9 @@ msgid "Delete" msgstr "Изтрий" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" -msgstr "" -"Сигурен ли сте, че искате да изтриете всички \"Избрано от Редактора\" за " -"тази ключова дума?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" +msgstr "Сигурен ли сте, че искате да изтриете всички \"Избрано от Редактора\" за тази ключова дума?" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 msgid "Yes, delete" @@ -147,14 +129,8 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Има едно съвпадение\n" -" " -msgstr[1] "" -"\n" -" Има %(counter)s съвпадения\n" -" " +msgstr[0] "\n Има едно съвпадение\n " +msgstr[1] "\n Има %(counter)s съвпадения\n " #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format @@ -164,8 +140,8 @@ msgstr "" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" msgstr "" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 diff --git a/wagtail/wagtailsearch/locale/ca/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/ca/LC_MESSAGES/django.mo index 92054ca93..9eeb16af9 100644 Binary files a/wagtail/wagtailsearch/locale/ca/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/ca/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/ca/LC_MESSAGES/django.po index 291cb8fe4..62deec3d6 100644 --- a/wagtail/wagtailsearch/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/ca/LC_MESSAGES/django.po @@ -1,22 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# Lloople <d.lloople@gmail.com>, 2014 +# David Llop <d.lloople@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-14 21:59+0000\n" -"Last-Translator: Lloople <d.lloople@gmail.com>\n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" -"ca/)\n" -"Language: ca\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/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" #: forms.py:9 @@ -28,17 +27,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"Escriu el text a cercar. Una\n" -"coincidència exacta és requerida per les teves seleccions dels editors per " -"ser\n" -"mostrades, les wildcars NO estan permeses." +msgstr "Escriu el text a cercar. Una\ncoincidència exacta és requerida per les teves seleccions dels editors per ser\nmostrades, les wildcars NO estan permeses." #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "Selecció dels editors" @@ -47,38 +42,21 @@ msgstr "Selecció dels editors" msgid "Add editor's pick" msgstr "afegeix selecció dels editors" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -"<p>Les seleccions dels editors són una mena de recomanacions de pàgines " -"específiques que no puguin aparèixer orgànicament als resultats de cerca. " -"Per exemple, recomanant la teva pàgina principal de donacions en un termini " -"de cerca comú com \"<em>donar</em>\".</p>" -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -"\n" -"<p>El camp \"Cerca paraula(es)/frases\" de sota ha de contenir la cerca " -"completa i exacta per al que vols proveïr resultats recomanats, " -"<em>inclöent</em> qualsevol error dels usuaris. Per ajugar, pots escollir " -"des dels terminis de cerca que s'han fet populars a través dels usuaris del " -"teu lloc.</p>" -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Desa" @@ -95,10 +73,9 @@ msgid "Delete" msgstr "Esborra" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" -msgstr "" -"Estàs segur que vols esborrar totes les seleccions dels editors per aquest " -"terme de cerca?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" +msgstr "Estàs segur que vols esborrar totes les seleccions dels editors per aquest terme de cerca?" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 msgid "Yes, delete" @@ -152,27 +129,20 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Hi ha una coincidència" -msgstr[1] "" -"\n" -"Hi han %(counter)s coincidències" +msgstr[0] "\nHi ha una coincidència" +msgstr[1] "\nHi han %(counter)s coincidències" #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" -msgstr "" -"Ho sentim, cap selecció d'editor coincideix amb \"<em>%(query_string)s</em>\"" +msgstr "Ho sentim, cap selecció d'editor coincideix amb \"<em>%(query_string)s</em>\"" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" -msgstr "" -"Encara no s'ha creat cap selecció d'editor. Per què no <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">afegeixes una</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "Encara no s'ha creat cap selecció d'editor. Per què no <a href=\"%(wagtailsearch_editorspicks_add_url)s\">afegeixes una</a>?" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 msgid "Move up" diff --git a/wagtail/wagtailsearch/locale/de/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/de/LC_MESSAGES/django.mo index c0f850a02..51d4574f3 100644 Binary files a/wagtail/wagtailsearch/locale/de/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/de/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/de/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/de/LC_MESSAGES/django.po index 767b6555f..a5bb2346f 100644 --- a/wagtail/wagtailsearch/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/de/LC_MESSAGES/django.po @@ -1,23 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# jspielmann <j@spielmannsolutions.com>, 2014 +# Johannes Spielmann <j@spielmannsolutions.com>, 2014 # pcraston <patrick@craston.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-24 19:02+0000\n" -"Last-Translator: pcraston <patrick@craston.com>\n" -"Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" -"de/)\n" -"Language: de\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: German (http://www.transifex.com/projects/p/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" #: forms.py:9 @@ -29,16 +28,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"Geben Sie den vollständigen Suchbegriff ein! Um Ihre Redaktionsempfehlungen " -"anzuzeigen wird eine genaue Übereinstimmung benötigt. Wildcards sind NICHT " -"erlaubt." +msgstr "Geben Sie den vollständigen Suchbegriff ein! Um Ihre Redaktionsempfehlungen anzuzeigen wird eine genaue Übereinstimmung benötigt. Wildcards sind NICHT erlaubt." #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "Redaktionsempfehlungen" @@ -47,39 +43,21 @@ msgstr "Redaktionsempfehlungen" msgid "Add editor's pick" msgstr "Redaktionsempfehlung hinzufügen" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -" <p>Redaktionsempfehlungen sind eine Möglichkeit, bestimmte Seiten zu " -"empfehlen die von sich aus nicht sehr weit oben in den Suchergebnissen " -"auftauchen würden. So könnte zum Beispiel Ihre Spendenseite auftauchen wenn " -"nach dem Suchbegriff \"<em>unterstützen</em>\" gesucht wird.</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -"\n" -" <p>Im Eingabefeld \"Suchbegriffe/Phrasen\" müssen Sie den " -"vollständigen und genauen Suchbegriff, inklusive eventueller " -"Rechtschreibfehler, eingeben, für den Sie Seiten empfehlen möchten. Zur " -"Unterstützung können Sie aus häufig verwendeten Suchbegriffen wählen.</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Speichern" @@ -96,10 +74,9 @@ msgid "Delete" msgstr "Löschen" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" -msgstr "" -"Sind Sie sicher, dass Sie alle Redaktionsempfehlungen für diesen Suchbegriff " -"löschen wollen?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" +msgstr "Sind Sie sicher, dass Sie alle Redaktionsempfehlungen für diesen Suchbegriff löschen wollen?" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 msgid "Yes, delete" @@ -153,30 +130,20 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Es gibt ein Ergebnis\n" -" " -msgstr[1] "" -"\n" -" Es gibt %(counter)s Ergebnisse\n" -" " +msgstr[0] "\n Es gibt ein Ergebnis\n " +msgstr[1] "\n Es gibt %(counter)s Ergebnisse\n " #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" -msgstr "" -"Es wurde leider keine Redaktionsempfehlung zum Suchbegriff \"<em>" -"%(query_string)s</em>\" gefunden" +msgstr "Es wurde leider keine Redaktionsempfehlung zum Suchbegriff \"<em>%(query_string)s</em>\" gefunden" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" -msgstr "" -"Sie haben noch keine Redaktionsempfehlungen erstellt. <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">Erstellen Sie doch jetzt eine!</a>" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "Sie haben noch keine Redaktionsempfehlungen erstellt. <a href=\"%(wagtailsearch_editorspicks_add_url)s\">Erstellen Sie doch jetzt eine!</a>" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 msgid "Move up" diff --git a/wagtail/wagtailsearch/locale/el/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/el/LC_MESSAGES/django.mo index 9eec235e1..ac1517148 100644 Binary files a/wagtail/wagtailsearch/locale/el/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/el/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/el/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/el/LC_MESSAGES/django.po index f8a010959..023235064 100644 --- a/wagtail/wagtailsearch/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/el/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # serafeim <serafeim@torchbox.com>, 2014 # serafeim <serafeim@torchbox.com>, 2014 @@ -9,15 +9,14 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-14 21:15+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" -"el/)\n" -"Language: el\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Greek (http://www.transifex.com/projects/p/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" #: forms.py:9 @@ -29,17 +28,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"Συμπληρώσατε το πλήρες κείμενο προς αναζήτησης.\n" -"Για να εμφανιστεί η επιλογή των συντακτών σας\n" -"απαιτείται ακριβές ταίριασμα, δεν επιτρέπονται\n" -"αστεράκια." +msgstr "Συμπληρώσατε το πλήρες κείμενο προς αναζήτησης.\nΓια να εμφανιστεί η επιλογή των συντακτών σας\nαπαιτείται ακριβές ταίριασμα, δεν επιτρέπονται\nαστεράκια." #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "Επιλογές συντακτών" @@ -48,39 +43,21 @@ msgstr "Επιλογές συντακτών" msgid "Add editor's pick" msgstr "Προσθήκη επιλογής συντακτών" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -"<p>Οι επιλογές συντακτών είναι ένας τρόπος πρότασης συγκεκριμένων σελίδων οι " -"οποίες κανονικά δε θα βρίσκονται ψηλά στα αποτελέσματα της αναζήτησης. Για " -"παράδειγμα, μπορείτε να προτείνετε τη σελίδα δωρεων σας σε μια αναζήτηση " -"ενός λιγότερο συνηθισμένου όρου όπως \"<em>δίνω</em>\".</p>" -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -"\n" -"\n" -"<p>Το πεδίο \"όροι/φράσεις αναζήτησης\" παρακάτω πρέπει να περιέχει το " -"πλήρες και ακριβές κείμενο για το οποίο θέλετε να παρέχετε προτεινόμενα " -"αποτελέσματα, <em>συμπεριλαμβανομένων</em> τυχόν ορθογραφικών λαθών. Προς " -"βοήθεια, μπορείτε να επιλέξετε όρους αναζήτησης που ήταν δημοφιλείς στους " -"χρήστες.</p>" -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Αποθήκευση" @@ -97,10 +74,9 @@ msgid "Delete" msgstr "Διαγραφή" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" -msgstr "" -"Είστε σίγουρος ότι θέλετε να διαγράψετε όλες τις επιλογές συντακτών για τον " -"εν λόγω όρο αναζήτησης;" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" +msgstr "Είστε σίγουρος ότι θέλετε να διαγράψετε όλες τις επιλογές συντακτών για τον εν λόγω όρο αναζήτησης;" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 msgid "Yes, delete" @@ -154,28 +130,20 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Βρέθηκε ένα αποτέλεσμα" -msgstr[1] "" -"\n" -"Βρέθηκαν %(counter)s αποτελέσματα" +msgstr[0] "\nΒρέθηκε ένα αποτέλεσμα" +msgstr[1] "\nΒρέθηκαν %(counter)s αποτελέσματα" #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" -msgstr "" -"Λυπούμαστε, δε ταιριάζουν επιλογές συντακτών με το \"<em>%(query_string)s</" -"em>\"" +msgstr "Λυπούμαστε, δε ταιριάζουν επιλογές συντακτών με το \"<em>%(query_string)s</em>\"" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" -msgstr "" -"Δεν υπάρχουν επιλογές συντακτών. Θέλετε να <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">προσθέσετε μία</a>;" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "Δεν υπάρχουν επιλογές συντακτών. Θέλετε να <a href=\"%(wagtailsearch_editorspicks_add_url)s\">προσθέσετε μία</a>;" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 msgid "Move up" diff --git a/wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.mo index 4b726f7d6..44e531ab0 100644 Binary files a/wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.po index 5db43c886..615e18f93 100644 --- a/wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+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" @@ -32,7 +32,7 @@ msgstr "" msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "" @@ -41,27 +41,27 @@ msgstr "" msgid "Add editor's pick" msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " +" <p>Editors picks are a means of recommending specific pages " +"that might not organically come high up in search results. E.g recommending " +"your primary donation page to a user searching with a less common term like " "\"<em>giving</em>\".</p>\n" -" " +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " +" <p>The \"Search term(s)/phrase\" field below must contain " +"the full and exact search for which you wish to provide recommended results, " "<em>including</em> any misspellings/user error. To help, you can choose from " "search terms that have been popular with users of your site.</p>\n" -" " +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "" diff --git a/wagtail/wagtailsearch/locale/es/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/es/LC_MESSAGES/django.mo index 1f680e681..d1321e116 100644 Binary files a/wagtail/wagtailsearch/locale/es/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/es/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/es/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/es/LC_MESSAGES/django.po index 41e8b9bb8..f619f1125 100644 --- a/wagtail/wagtailsearch/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 @@ -9,15 +9,14 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-23 10:17+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" -"es/)\n" -"Language: es\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/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=2; plural=(n != 1);\n" #: forms.py:9 @@ -29,17 +28,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"Introduce la cadena completa de búsqueda a encontrar. Es \n" -" necesaria una coincidencia exacta para que tus Selecciones del " -"Editor sean \n" -" mostradas, los comodines NO están permitidos." +msgstr "Introduce la cadena completa de búsqueda a encontrar. Es \n necesaria una coincidencia exacta para que tus Selecciones del Editor sean \n mostradas, los comodines NO están permitidos." #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "Selecciones del editor" @@ -48,41 +43,21 @@ msgstr "Selecciones del editor" msgid "Add editor's pick" msgstr "Añadir selección del editor" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -" <p>Las Selecciones del editor son una manera de recomendar las " -"páginas específicas que podrían no aparecer por sí solas en lo alto de los " -"resultados de búsqueda. P. ej., la recomendación de tu página principal de " -"donaciones a un usuario que busque con un término menos común como " -"\"<em>dando</em>\".</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -"\n" -" <p>El campo de \"término(s)/frase de Búsqueda\" debe contener la " -"búsqueda completa y exacta por la que deseas que se proporcionen los " -"resultados recomendados, <em>incluyendo</em> cualquier error de de " -"ortografía/usuario. Para ayudar, puedes elegir entre los términos de " -"búsqueda que han sido populares entre los usuarios de tu sitio.</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Guardar" @@ -99,10 +74,9 @@ msgid "Delete" msgstr "Eliminar" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" -msgstr "" -"¿Seguro que quieres eliminar todas las selecciones del editor para este " -"término de búsqueda?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" +msgstr "¿Seguro que quieres eliminar todas las selecciones del editor para este término de búsqueda?" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 msgid "Yes, delete" @@ -156,30 +130,20 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Hay una coincidencia\n" -" " -msgstr[1] "" -"\n" -" Hay %(counter)s coincidencias\n" -" " +msgstr[0] "\n Hay una coincidencia\n " +msgstr[1] "\n Hay %(counter)s coincidencias\n " #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" -msgstr "" -"Lo sentimos, no hay coincidencias en las selecciones del editor \"<em>" -"%(query_string)s</em>\"" +msgstr "Lo sentimos, no hay coincidencias en las selecciones del editor \"<em>%(query_string)s</em>\"" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" -msgstr "" -"Ninguna selección del editor ha sido creada. ¿Por qué no <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">añadir una</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "Ninguna selección del editor ha sido creada. ¿Por qué no <a href=\"%(wagtailsearch_editorspicks_add_url)s\">añadir una</a>?" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 msgid "Move up" diff --git a/wagtail/wagtailsearch/locale/eu/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/eu/LC_MESSAGES/django.mo index f5afff9e4..b3e5368fc 100644 Binary files a/wagtail/wagtailsearch/locale/eu/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/eu/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/eu/LC_MESSAGES/django.po index 9ae3ba143..277720dcb 100644 --- a/wagtail/wagtailsearch/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/eu/LC_MESSAGES/django.po @@ -1,21 +1,20 @@ # 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: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" -"eu/)\n" -"Language: eu\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Basque (http://www.transifex.com/projects/p/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" #: forms.py:9 @@ -33,7 +32,7 @@ msgstr "" msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "" @@ -42,27 +41,21 @@ msgstr "" msgid "Add editor's pick" msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "" @@ -79,7 +72,8 @@ msgid "Delete" msgstr "" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" msgstr "" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 @@ -145,8 +139,8 @@ msgstr "" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" msgstr "" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 diff --git a/wagtail/wagtailsearch/locale/fr/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/fr/LC_MESSAGES/django.mo index 3cea88585..f1bd1d685 100644 Binary files a/wagtail/wagtailsearch/locale/fr/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/fr/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/fr/LC_MESSAGES/django.po index 9ef061990..c787820da 100644 --- a/wagtail/wagtailsearch/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/fr/LC_MESSAGES/django.po @@ -1,22 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # nahuel, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-18 23:17+0000\n" -"Last-Translator: nahuel\n" -"Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" -"fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: French (http://www.transifex.com/projects/p/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=2; plural=(n > 1);\n" #: forms.py:9 @@ -34,7 +33,7 @@ msgstr "" msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "" @@ -43,27 +42,21 @@ msgstr "" msgid "Add editor's pick" msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Enregistrer" @@ -80,7 +73,8 @@ msgid "Delete" msgstr "Supprimer" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" msgstr "" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 @@ -141,15 +135,13 @@ msgstr[1] "" #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" -msgstr "" -"Désolé, aucun choix de rédacteur ne correspond avec \"<em>%(query_string)s</" -"em>\"" +msgstr "Désolé, aucun choix de rédacteur ne correspond avec \"<em>%(query_string)s</em>\"" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" msgstr "" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 diff --git a/wagtail/wagtailsearch/locale/gl/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/gl/LC_MESSAGES/django.mo index 8686026e8..d9ea5fd04 100644 Binary files a/wagtail/wagtailsearch/locale/gl/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/gl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/gl/LC_MESSAGES/django.po index 18e32e638..bd63b29ba 100644 --- a/wagtail/wagtailsearch/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/gl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 @@ -9,15 +9,14 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-23 10:33+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" -"language/gl/)\n" -"Language: gl\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/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" #: forms.py:9 @@ -29,17 +28,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"Introduce a cadea completa de busca a atopar. É \n" -" necesaria unha coincidencia exacta para que as túas Seleccións do " -"Editor sexan \n" -" mostradas, os comodines NON están permitidos." +msgstr "Introduce a cadea completa de busca a atopar. É \n necesaria unha coincidencia exacta para que as túas Seleccións do Editor sexan \n mostradas, os comodines NON están permitidos." #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "Seleccións do editor" @@ -48,41 +43,21 @@ msgstr "Seleccións do editor" msgid "Add editor's pick" msgstr "Engadir selección do editor" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -" <p>As Seleccións do editor son unha maneira de recomendar as " -"páxinas específicas que poderían non aparecer por sí soas no alto dos " -"resultados de búsqueda. P. ex., a recomendación da túa páxina principal de " -"donacións a un usuario que procure con un termo menos común como " -"\"<em>dando</em>\".</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -"\n" -" <p>O campo de \"termo(s)/frase de Busca\" debe conter a busca " -"completa e exacta pola que desexas que se proporcionen os resultados " -"recomendados, <em>incluíndo</em> calquera erro de de ortografía/usuario. " -"Para axudar, podes elixir entre os termos de busca que foron populares entre " -"os usuarios do teu sitio.</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Gardar" @@ -99,10 +74,9 @@ msgid "Delete" msgstr "Eliminar" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" -msgstr "" -"¿Seguro que queres eliminar todas as seleccións do editor para este termo de " -"busca?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" +msgstr "¿Seguro que queres eliminar todas as seleccións do editor para este termo de busca?" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 msgid "Yes, delete" @@ -156,29 +130,20 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Hai unha coincidencia\n" -" " -msgstr[1] "" -"\n" -" Hai %(counter)s coincidencias\n" -" " +msgstr[0] "\n Hai unha coincidencia\n " +msgstr[1] "\n Hai %(counter)s coincidencias\n " #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" -msgstr "" -"Sentímolo, ningunha selección do editor contén \"<em>%(query_string)s</em>\"" +msgstr "Sentímolo, ningunha selección do editor contén \"<em>%(query_string)s</em>\"" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" -msgstr "" -"Ningunha selección do editor foi creada. ¿Por qué non <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">engadir unha</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "Ningunha selección do editor foi creada. ¿Por qué non <a href=\"%(wagtailsearch_editorspicks_add_url)s\">engadir unha</a>?" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 msgid "Move up" diff --git a/wagtail/wagtailsearch/locale/mn/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/mn/LC_MESSAGES/django.mo index ab9c57461..e5957554f 100644 Binary files a/wagtail/wagtailsearch/locale/mn/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/mn/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/mn/LC_MESSAGES/django.po index 0281e67ce..a0544cbc2 100644 --- a/wagtail/wagtailsearch/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/mn/LC_MESSAGES/django.po @@ -1,22 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# delgermurun <info@delgermurun.com>, 2014 +# Delgermurun Purevkhuuu <info@delgermurun.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" -"language/mn/)\n" -"Language: mn\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/language/mn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: mn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: forms.py:9 @@ -34,7 +33,7 @@ msgstr "" msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "" @@ -43,27 +42,21 @@ msgstr "" msgid "Add editor's pick" msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Хадгалах" @@ -80,7 +73,8 @@ msgid "Delete" msgstr "Устгах" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" msgstr "" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 @@ -146,8 +140,8 @@ msgstr "" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" msgstr "" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 diff --git a/wagtail/wagtailsearch/locale/pl/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/pl/LC_MESSAGES/django.mo index 12372660b..fbb63539a 100644 Binary files a/wagtail/wagtailsearch/locale/pl/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/pl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/pl/LC_MESSAGES/django.po index aca122059..430cfba84 100644 --- a/wagtail/wagtailsearch/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/pl/LC_MESSAGES/django.po @@ -1,24 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # utek <mail@utek.pl>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-14 22:16+0000\n" -"Last-Translator: utek <mail@utek.pl>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" -"pl/)\n" -"Language: pl\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: forms.py:9 msgid "Search term(s)/phrase" @@ -29,17 +27,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"Wprowadź pełną frazę wyszukania do porównania.\n" -" Dokładne porównanie jest wymagane żeby twoje \n" -" wybory redakcji były wyświetlone, symbol \n" -" wieloznaczności jest niedozwolony." +msgstr "Wprowadź pełną frazę wyszukania do porównania.\n Dokładne porównanie jest wymagane żeby twoje \n wybory redakcji były wyświetlone, symbol \n wieloznaczności jest niedozwolony." #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "Wybór redakcji" @@ -48,39 +42,21 @@ msgstr "Wybór redakcji" msgid "Add editor's pick" msgstr "Dodaj wybór redakcji" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -" <p>Wybór redakcji służy do polecania stron, które normalnie " -"niekoniecznie pojawiają sie wysoko w wynikach wyszukiwania. Np. polecanie " -"głównej strony z darowiznami użytkownikom szukającym mniej pasujących " -"wyrażeń jak np. \"<em>oferować</em>\".</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -"\n" -" <p>Pole \"Frazy wyszukiwania\" musi zawierać pełne i dokładne " -"wyszukanie dla którego chcesz wyświetlić polecanie wyniki, <em>razem z</em> " -"wszystkimi literówkami/błędami użytkownika. W celu ułatwienia możesz wybrać " -"z fraz wyszukiwania popularnych wśród użytkowników Twojej strony</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Zapisz" @@ -97,10 +73,9 @@ msgid "Delete" msgstr "Usuń" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" -msgstr "" -"Czy na pewno chcesz usunąć wszystkie wybory redakcji dla tych fraz " -"wyszukiwania?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" +msgstr "Czy na pewno chcesz usunąć wszystkie wybory redakcji dla tych fraz wyszukiwania?" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 msgid "Yes, delete" @@ -154,34 +129,21 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -" Jedno dopasowanie\n" -" " -msgstr[1] "" -"\n" -" Są %(counter)s dopasowania\n" -" " -msgstr[2] "" -"\n" -" Jest %(counter)s dopasowań\n" -" " +msgstr[0] "\n Jedno dopasowanie\n " +msgstr[1] "\n Są %(counter)s dopasowania\n " +msgstr[2] "\n Jest %(counter)s dopasowań\n " #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" -msgstr "" -"Przepraszamy, żaden wybór redakcji nie pasuje do \"<em>%(query_string)s</em>" -"\"" +msgstr "Przepraszamy, żaden wybór redakcji nie pasuje do \"<em>%(query_string)s</em>\"" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" -msgstr "" -"Nie stworzono żadnego wyboru redakcji. Czemu nie <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">dodać jakiegoś</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "Nie stworzono żadnego wyboru redakcji. Czemu nie <a href=\"%(wagtailsearch_editorspicks_add_url)s\">dodać jakiegoś</a>?" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 msgid "Move up" diff --git a/wagtail/wagtailsearch/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..1b03459c4 Binary files /dev/null and b/wagtail/wagtailsearch/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..705ad9584 --- /dev/null +++ b/wagtail/wagtailsearch/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,237 @@ +# 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. +# +# Translators: +# Gladson <gladsonbrito@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-03 01:58+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" +"Language: pt_PT\n" + +#: forms.py:9 +msgid "Search term(s)/phrase" +msgstr "Procurar termo(s)/frase" + +#: forms.py:10 +msgid "" +"Enter the full search string to match. An \n" +" exact match is required for your Editors Picks to be \n" +" displayed, wildcards are NOT allowed." +msgstr "" +"introduza a frase completa a procurar. É \n" +" necessária uma coincidência exacta com os termos de procura para que " +"as suas Seleções de Editor sejam \n" +" mostradas, caracteres de substituição (wildcards) NÃO são permitidos." + +#: forms.py:36 +msgid "Please specify at least one recommendation for this search term." +msgstr "" +"Por favor especifique pelo menos uma recomendação para este termo de procura." + +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 +msgid "Editors picks" +msgstr "Escolhas do editor" + +#: templates/wagtailsearch/editorspicks/add.html:3 +#: templates/wagtailsearch/editorspicks/add.html:5 +msgid "Add editor's pick" +msgstr "Adicionar escolha de editor" + +#: templates/wagtailsearch/editorspicks/add.html:10 +msgid "" +"\n" +" <p>Editors picks are a means of recommending specific pages " +"that might not organically come high up in search results. E.g recommending " +"your primary donation page to a user searching with a less common term like " +"\"<em>giving</em>\".</p>\n" +" " +msgstr "" +"\n" +" <p>Escolhas de Editores servem para recomendar páginas que " +"poderiam não ser selecionadas para aparecer em posição alta em resultados de " +"pesquisa. Por ex., recomendar a sua página principal de donativos para ser " +"pesquisada usando termos menos comuns como \"<em>dar</em>\".</p>\n" +" " + +#: templates/wagtailsearch/editorspicks/add.html:13 +msgid "" +"\n" +" <p>The \"Search term(s)/phrase\" field below must contain " +"the full and exact search for which you wish to provide recommended results, " +"<em>including</em> any misspellings/user error. To help, you can choose from " +"search terms that have been popular with users of your site.</p>\n" +" " +msgstr "" +"\n" +" <p>O campo \"Procurar termo(s)/frase\" abaixo tem de conter " +"a pesquisa completa e exata para a qual pretende indicar resultados " +"recomendados, <em>incluindo</em> quaisquer erros de ortografia/utilizador. " +"Para facilitar, pode escolher de entre termos de pesquisa que tenham sido " +"usados frequentemente por utilizadores do seu site.</p>\n" +" " + +#: templates/wagtailsearch/editorspicks/add.html:27 +#: templates/wagtailsearch/editorspicks/edit.html:19 +msgid "Save" +msgstr "Guardar" + +#: templates/wagtailsearch/editorspicks/confirm_delete.html:3 +#, python-format +msgid "Delete %(query)s" +msgstr "Eliminar %(query)s" + +#: templates/wagtailsearch/editorspicks/confirm_delete.html:5 +#: templates/wagtailsearch/editorspicks/edit.html:20 +#: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:6 +msgid "Delete" +msgstr "Eliminar" + +#: templates/wagtailsearch/editorspicks/confirm_delete.html:9 +msgid "Are you sure you want to delete all editors picks for this search term?" +msgstr "" +"Tem a certeza que pretende eliminar todas as escolhas de editores para este " +"termo de pesquisa?" + +#: templates/wagtailsearch/editorspicks/confirm_delete.html:12 +msgid "Yes, delete" +msgstr "Sim, eliminar" + +#: templates/wagtailsearch/editorspicks/edit.html:3 +#, python-format +msgid "Editing %(query)s" +msgstr "Editando %(query)s" + +#: templates/wagtailsearch/editorspicks/edit.html:5 +msgid "Editing" +msgstr "Editando" + +#: templates/wagtailsearch/editorspicks/index.html:3 +msgid "Search Terms" +msgstr "Procurar Termos" + +#: templates/wagtailsearch/editorspicks/index.html:17 +msgid "Editor's search picks" +msgstr "Procurar escolhas de editor" + +#: templates/wagtailsearch/editorspicks/index.html:18 +msgid "Add new editor's pick" +msgstr "Adicionar nova escolha de editor" + +#: templates/wagtailsearch/editorspicks/list.html:8 +msgid "Search term(s)" +msgstr "Procurar termo(s)" + +#: templates/wagtailsearch/editorspicks/list.html:10 +#: templates/wagtailsearch/queries/chooser/results.html:8 +msgid "Views (past week)" +msgstr "Visualizações (última semana)" + +#: templates/wagtailsearch/editorspicks/list.html:17 +msgid "Edit this pick" +msgstr "Editar esta escolha" + +#: templates/wagtailsearch/editorspicks/list.html:23 +msgid "None" +msgstr "Nenhuma" + +#: templates/wagtailsearch/editorspicks/results.html:5 +#, python-format +msgid "" +"\n" +" There is one match\n" +" " +msgid_plural "" +"\n" +" There are %(counter)s matches\n" +" " +msgstr[0] "" +"\n" +" Existe uma ocorrência\n" +" " +msgstr[1] "" +"\n" +" Existem %(counter)s ocorrências\n" +" " + +#: templates/wagtailsearch/editorspicks/results.html:18 +#, python-format +msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" +msgstr "" +"Desculpe, nenhuma escolha de editor contém \"<em>%(query_string)s</em>\"" + +#: templates/wagtailsearch/editorspicks/results.html:21 +#, python-format +msgid "" +"No editor's picks have been created. Why not <a href=" +"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "" +"Nenhuma escolha de editor foi criada. Porque não <a href=" +"\"%(wagtailsearch_editorspicks_add_url)s\">adicionar uma</a>?" + +#: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 +msgid "Move up" +msgstr "Mover para cima" + +#: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:5 +msgid "Move down" +msgstr "Mover para baixo" + +#: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:10 +msgid "Editors pick" +msgstr "Escolha de editor" + +#: templates/wagtailsearch/editorspicks/includes/editorspicks_formset.html:14 +msgid "Add recommended page" +msgstr "Adicionar uma página recomendada" + +#: templates/wagtailsearch/queries/chooser/chooser.html:2 +msgid "Popular search terms" +msgstr "Termos de procura populares" + +#: templates/wagtailsearch/queries/chooser/chooser.html:11 +msgid "Search" +msgstr "Procurar" + +#: templates/wagtailsearch/queries/chooser/results.html:7 +msgid "Terms" +msgstr "Termos" + +#: templates/wagtailsearch/queries/chooser/results.html:22 +msgid "No results found" +msgstr "Nenhum resultado encontrado" + +#: views/editorspicks.py:47 +msgid "Search editor's picks" +msgstr "Procurar nas escolhas de editor" + +#: views/editorspicks.py:83 +msgid "Editor's picks for '{0}' created." +msgstr "Escolhas de editor para '{0}' criadas." + +#: views/editorspicks.py:89 +msgid "Recommendations have not been created due to errors" +msgstr "Recomendações não foram criadas devido a erros." + +#: views/editorspicks.py:117 +msgid "Editor's picks for '{0}' updated." +msgstr "Escolhas de editor para '{0}' atualizadas." + +#: views/editorspicks.py:123 +msgid "Recommendations have not been saved due to errors" +msgstr "Recomendações não foram guardadas devido a erros." + +#: views/editorspicks.py:142 +msgid "Editor's picks deleted." +msgstr "Escolhas de editor eliminadas." diff --git a/wagtail/wagtailsearch/locale/ro/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/ro/LC_MESSAGES/django.mo index 7ef6bef02..305c7c463 100644 Binary files a/wagtail/wagtailsearch/locale/ro/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/ro/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/ro/LC_MESSAGES/django.po index 4bec0c5af..6301dd67b 100644 --- a/wagtail/wagtailsearch/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/ro/LC_MESSAGES/django.po @@ -1,25 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# zerolab, 2014 -# zerolab, 2014 +# Dan Braghis, 2014 +# Dan Braghis, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-18 13:21+0000\n" -"Last-Translator: zerolab\n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" -"language/ro/)\n" -"Language: ro\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" #: forms.py:9 msgid "Search term(s)/phrase" @@ -30,16 +28,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"Introduceți șirul complet de căutare. \n" -"Este nevoie de o potrivire exactă pentru a afișa selecțiile \n" -"dvs. editoriale. Metacaractere NU sunt permise." +msgstr "Introduceți șirul complet de căutare. \nEste nevoie de o potrivire exactă pentru a afișa selecțiile \ndvs. editoriale. Metacaractere NU sunt permise." #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "Selecții editoriale" @@ -48,37 +43,21 @@ msgstr "Selecții editoriale" msgid "Add editor's pick" msgstr "Adaugă selecție editorială" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -"<p>Selecțiile editoriale sunt mijloace de recomandare de pagini ce pot să nu " -"apară la începutul rezultatelor de căutare în mod natural. De exemplu, " -"recomandarea paginii de donații utilizatorilor care au căutat termeni mai " -"puțin specifici ca \"<em>dare</em>\".</p>" -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -"\n" -"<p>Câmpul \"Termeni/frază de căutare\" de mai jos trebuie să conțină șirul " -"exact pentru care doriți să furnizați rezultate recomandate. <em>Includeți</" -"em> greșeli ortografice și alte greșeli. Puteți să alegeți din termenii de " -"căutare populari printre utilizatorii sitului dvs.</p>" -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "Salvează" @@ -95,10 +74,9 @@ msgid "Delete" msgstr "Șterge" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" -msgstr "" -"Sigur doriți să ștergeți toate selecțiile editoriale pentru acest termen de " -"căutare?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" +msgstr "Sigur doriți să ștergeți toate selecțiile editoriale pentru acest termen de căutare?" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 msgid "Yes, delete" @@ -152,31 +130,21 @@ msgid_plural "" "\n" " There are %(counter)s matches\n" " " -msgstr[0] "" -"\n" -"Există o potrivire" -msgstr[1] "" -"\n" -"Sunt %(counter)s potriviri" -msgstr[2] "" -"\n" -"Sunt %(counter)s potriviri" +msgstr[0] "\nExistă o potrivire" +msgstr[1] "\nSunt %(counter)s potriviri" +msgstr[2] "\nSunt %(counter)s potriviri" #: templates/wagtailsearch/editorspicks/results.html:18 #, python-format msgid "Sorry, no editor's picks match \"<em>%(query_string)s</em>\"" -msgstr "" -"Ne pare rău, \"<em>%(query_string)s</em>\" nu se potrivește cu nici o " -"selecție editorială" +msgstr "Ne pare rău, \"<em>%(query_string)s</em>\" nu se potrivește cu nici o selecție editorială" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" -msgstr "" -"Nu a fost creată nici o selecție editorială. De ce să nu <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">adăugați una</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "Nu a fost creată nici o selecție editorială. De ce să nu <a href=\"%(wagtailsearch_editorspicks_add_url)s\">adăugați una</a>?" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 msgid "Move up" diff --git a/wagtail/wagtailsearch/locale/zh/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/zh/LC_MESSAGES/django.mo index 9d3efb3bf..da1c1893d 100644 Binary files a/wagtail/wagtailsearch/locale/zh/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/zh/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/zh/LC_MESSAGES/django.po index a5007c7b2..0d7561367 100644 --- a/wagtail/wagtailsearch/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/zh/LC_MESSAGES/django.po @@ -1,21 +1,20 @@ # 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: 2014-07-11 10:54+0000\n" -"PO-Revision-Date: 2014-03-14 21:12+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" -"zh/)\n" -"Language: zh\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/zh/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" "Plural-Forms: nplurals=1; plural=0;\n" #: forms.py:9 @@ -27,16 +26,13 @@ msgid "" "Enter the full search string to match. An \n" " exact match is required for your Editors Picks to be \n" " displayed, wildcards are NOT allowed." -msgstr "" -"输入完整的字符来匹配. \n" -" 必须输入完全一样的编辑精选进行匹配 \n" -" 不允许匹配" +msgstr "输入完整的字符来匹配. \n 必须输入完全一样的编辑精选进行匹配 \n 不允许匹配" #: forms.py:36 msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "编辑精选" @@ -45,35 +41,21 @@ msgstr "编辑精选" msgid "Add editor's pick" msgstr "添加编辑精选" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " -"\"<em>giving</em>\".</p>\n" -" " +" <p>Editors picks are a means of recommending specific pages that might not organically come high up in search results. E.g recommending your primary donation page to a user searching with a less common term like \"<em>giving</em>\".</p>\n" +" " msgstr "" -"\n" -" <p>编辑精选是用于推荐部分在搜索排名不高的页面. 比如用关键词推荐用户到" -"捐助页面。</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " -"<em>including</em> any misspellings/user error. To help, you can choose from " -"search terms that have been popular with users of your site.</p>\n" -" " +" <p>The \"Search term(s)/phrase\" field below must contain the full and exact search for which you wish to provide recommended results, <em>including</em> any misspellings/user error. To help, you can choose from search terms that have been popular with users of your site.</p>\n" +" " msgstr "" -"\n" -" <p>下面空格中的搜索关键词必须是你希望提供推荐结果的完整关键词,<em>包" -"括</em>任何可能错拼的词组. 提示,你可以从流行的搜索关键词中选择.</p>\n" -" " -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "保存" @@ -90,7 +72,8 @@ msgid "Delete" msgstr "删除" #: templates/wagtailsearch/editorspicks/confirm_delete.html:9 -msgid "Are you sure you want to delete all editors picks for this search term?" +msgid "" +"Are you sure you want to delete all editors picks for this search term?" msgstr "你确定你想要删除所有匹配这个关键词的编辑精选吗?" #: templates/wagtailsearch/editorspicks/confirm_delete.html:12 @@ -155,11 +138,9 @@ msgstr "" #: templates/wagtailsearch/editorspicks/results.html:21 #, python-format msgid "" -"No editor's picks have been created. Why not <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" -msgstr "" -"没有任何已保存的编辑精选. 为什么不 <a href=" -"\"%(wagtailsearch_editorspicks_add_url)s\">加入一个</a>?" +"No editor's picks have been created. Why not <a " +"href=\"%(wagtailsearch_editorspicks_add_url)s\">add one</a>?" +msgstr "没有任何已保存的编辑精选. 为什么不 <a href=\"%(wagtailsearch_editorspicks_add_url)s\">加入一个</a>?" #: templates/wagtailsearch/editorspicks/includes/editorspicks_form.html:4 msgid "Move up" diff --git a/wagtail/wagtailsearch/locale/zh_TW/LC_MESSAGES/django.mo b/wagtail/wagtailsearch/locale/zh_TW/LC_MESSAGES/django.mo index 038c04394..048f04874 100644 Binary files a/wagtail/wagtailsearch/locale/zh_TW/LC_MESSAGES/django.mo and b/wagtail/wagtailsearch/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsearch/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtailsearch/locale/zh_TW/LC_MESSAGES/django.po index 4b74195b5..00bc8ec1a 100644 --- a/wagtail/wagtailsearch/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtailsearch/locale/zh_TW/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:54+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" @@ -35,7 +35,7 @@ msgstr "" msgid "Please specify at least one recommendation for this search term." msgstr "" -#: wagtail_hooks.py:22 templates/wagtailsearch/editorspicks/list.html:9 +#: wagtail_hooks.py:23 templates/wagtailsearch/editorspicks/list.html:9 msgid "Editors picks" msgstr "編者精選" @@ -44,35 +44,37 @@ msgstr "編者精選" msgid "Add editor's pick" msgstr "新增編者精選" -#: templates/wagtailsearch/editorspicks/add.html:9 +#: templates/wagtailsearch/editorspicks/add.html:10 +#, fuzzy msgid "" "\n" -" <p>Editors picks are a means of recommending specific pages that " -"might not organically come high up in search results. E.g recommending your " -"primary donation page to a user searching with a less common term like " +" <p>Editors picks are a means of recommending specific pages " +"that might not organically come high up in search results. E.g recommending " +"your primary donation page to a user searching with a less common term like " "\"<em>giving</em>\".</p>\n" -" " +" " msgstr "" "\n" " <p>編者精選是用於推薦部份在搜尋排名不高的頁面。 例如用關鍵字推薦使用" "者到捐獻頁面。</p>\n" " " -#: templates/wagtailsearch/editorspicks/add.html:12 +#: templates/wagtailsearch/editorspicks/add.html:13 +#, fuzzy msgid "" "\n" -" <p>The \"Search term(s)/phrase\" field below must contain the full " -"and exact search for which you wish to provide recommended results, " +" <p>The \"Search term(s)/phrase\" field below must contain " +"the full and exact search for which you wish to provide recommended results, " "<em>including</em> any misspellings/user error. To help, you can choose from " "search terms that have been popular with users of your site.</p>\n" -" " +" " msgstr "" "\n" " <p>下面的關鍵字必須是你希望推薦結果的完整關鍵字,<em>包括</em>任何可" "能拼錯的詞。 提示,你可以從熱門的關鍵字選擇。</p>\n" " " -#: templates/wagtailsearch/editorspicks/add.html:25 +#: templates/wagtailsearch/editorspicks/add.html:27 #: templates/wagtailsearch/editorspicks/edit.html:19 msgid "Save" msgstr "儲存" diff --git a/wagtail/wagtailsearch/models.py b/wagtail/wagtailsearch/models.py index f82bb2462..a24183ad9 100644 --- a/wagtail/wagtailsearch/models.py +++ b/wagtail/wagtailsearch/models.py @@ -4,7 +4,6 @@ from django.db import models from django.utils import timezone from django.utils.encoding import python_2_unicode_compatible -from wagtail.wagtailsearch import indexed from wagtail.wagtailsearch.utils import normalise_query_string, MAX_QUERY_STRING_LENGTH diff --git a/wagtail/wagtailsearch/signal_handlers.py b/wagtail/wagtailsearch/signal_handlers.py index 3550e5175..1c55eb59f 100644 --- a/wagtail/wagtailsearch/signal_handlers.py +++ b/wagtail/wagtailsearch/signal_handlers.py @@ -2,7 +2,7 @@ from django.db.models.signals import post_save, post_delete from django.db import models from django.conf import settings -from wagtail.wagtailsearch.indexed import Indexed +from wagtail.wagtailsearch.index import Indexed from wagtail.wagtailsearch.backends import get_search_backend diff --git a/wagtail/wagtailsearch/tests/test_indexed_class.py b/wagtail/wagtailsearch/tests/test_indexed_class.py index 983d8e0ba..54eb2f161 100644 --- a/wagtail/wagtailsearch/tests/test_indexed_class.py +++ b/wagtail/wagtailsearch/tests/test_indexed_class.py @@ -2,7 +2,7 @@ import warnings from django.test import TestCase -from wagtail.wagtailsearch import indexed +from wagtail.wagtailsearch import index from wagtail.tests import models from wagtail.tests.utils import WagtailTestUtils @@ -30,12 +30,12 @@ class TestIndexedFieldsBackwardsCompatibility(TestCase, WagtailTestUtils): # Check that the fields were found self.assertEqual(len(search_fields_dict), 2) - self.assertIn(('title', indexed.SearchField), search_fields_dict.keys()) - self.assertIn(('live', indexed.FilterField), search_fields_dict.keys()) + self.assertIn(('title', index.SearchField), search_fields_dict.keys()) + self.assertIn(('live', index.FilterField), search_fields_dict.keys()) # Check that the title field has the correct settings - self.assertTrue(search_fields_dict[('title', indexed.SearchField)].partial_match) - self.assertEqual(search_fields_dict[('title', indexed.SearchField)].boost, 100) + self.assertTrue(search_fields_dict[('title', index.SearchField)].partial_match) + self.assertEqual(search_fields_dict[('title', index.SearchField)].boost, 100) def test_indexed_fields_backwards_compatibility_list(self): # Get search fields @@ -49,5 +49,5 @@ class TestIndexedFieldsBackwardsCompatibility(TestCase, WagtailTestUtils): # Check that the fields were found self.assertEqual(len(search_fields_dict), 2) - self.assertIn(('title', indexed.SearchField), search_fields_dict.keys()) - self.assertIn(('content', indexed.SearchField), search_fields_dict.keys()) + self.assertIn(('title', index.SearchField), search_fields_dict.keys()) + self.assertIn(('content', index.SearchField), search_fields_dict.keys()) diff --git a/wagtail/wagtailsnippets/locale/bg/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/bg/LC_MESSAGES/django.mo index b712c2e88..a759b9953 100644 Binary files a/wagtail/wagtailsnippets/locale/bg/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/bg/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/bg/LC_MESSAGES/django.po index ceb132915..0696859b9 100644 --- a/wagtail/wagtailsnippets/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/bg/LC_MESSAGES/django.po @@ -1,25 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# LyuboslavPetrov <petrov.lyuboslav@gmail.com>, 2014 +# Lyuboslav Petrov <petrov.lyuboslav@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-24 20:18+0000\n" -"Last-Translator: LyuboslavPetrov <petrov.lyuboslav@gmail.com>\n" -"Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" -"language/bg/)\n" -"Language: bg\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/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" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "Откъси от код" @@ -80,6 +79,7 @@ msgid "Editing" msgstr "Редактиране" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Заглавие" @@ -101,28 +101,51 @@ msgstr "Добави %(snippet_type_name)s" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"Няма създадени %(snippet_type_name_plural)s. Защо не <a href=" -"\"%(wagtailsnippets_create_url)s\">добавите един сега</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "Няма създадени %(snippet_type_name_plural)s. Защо не <a href=\"%(wagtailsnippets_create_url)s\">добавите един сега</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "{snippet_type} '{instance}' е създаден" -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "Този код-откъс не беше създаден поради грешки." -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "{snippet_type} '{instance}' обновен." -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "Откъса от док не можеше да бъде запазен поради грешки." -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "{snippet_type} '{instance}' изтрит." diff --git a/wagtail/wagtailsnippets/locale/ca/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/ca/LC_MESSAGES/django.mo index c5294ac3f..15dec447c 100644 Binary files a/wagtail/wagtailsnippets/locale/ca/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/ca/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/ca/LC_MESSAGES/django.po index 34c33f0b2..c9f7a423e 100644 --- a/wagtail/wagtailsnippets/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/ca/LC_MESSAGES/django.po @@ -1,25 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# Lloople <d.lloople@gmail.com>, 2014 +# David Llop <d.lloople@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-26 21:30+0000\n" -"Last-Translator: Lloople <d.lloople@gmail.com>\n" -"Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" -"ca/)\n" -"Language: ca\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Catalan (http://www.transifex.com/projects/p/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" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "Fragments" @@ -80,6 +79,7 @@ msgid "Editing" msgstr "Editant" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Títol" @@ -101,28 +101,51 @@ msgstr "Afegeix %(snippet_type_name)s" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"No s'ha creat cap %(snippet_type_name_plural)s. Per què no <a href=" -"\"%(wagtailsnippets_create_url)s\">afeixes un</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "No s'ha creat cap %(snippet_type_name_plural)s. Per què no <a href=\"%(wagtailsnippets_create_url)s\">afeixes un</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "{snippet_type} '{instance}' creat." -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "El fragment no s'ha pogut crear degut a errors." -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "{snippet_type} '{instance}' actualitzat." -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "El fragment no s'ha pogut desar degut a errors." -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "{snippet_type} '{instance}' esborrat." diff --git a/wagtail/wagtailsnippets/locale/de/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/de/LC_MESSAGES/django.mo index 3c551da28..8e1c73d7c 100644 Binary files a/wagtail/wagtailsnippets/locale/de/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/de/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/de/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/de/LC_MESSAGES/django.po index 62a92e748..f1b1aeb98 100644 --- a/wagtail/wagtailsnippets/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/de/LC_MESSAGES/django.po @@ -1,26 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# jspielmann <j@spielmannsolutions.com>, 2014 +# Johannes Spielmann <j@spielmannsolutions.com>, 2014 # karlsander <karlsander@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-25 17:59+0000\n" -"Last-Translator: jspielmann <j@spielmannsolutions.com>\n" -"Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" -"de/)\n" -"Language: de\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: German (http://www.transifex.com/projects/p/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" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "Snippets" @@ -81,6 +80,7 @@ msgid "Editing" msgstr "Bearbeiten" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Titel" @@ -102,28 +102,51 @@ msgstr "%(snippet_type_name)s hinzufügen" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"Sie haben noch keine %(snippet_type_name_plural)s erstellt. <a href=" -"\"%(wagtailsnippets_create_url)s\">Erstellen Sie doch jetzt eins!</a>" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "Sie haben noch keine %(snippet_type_name_plural)s erstellt. <a href=\"%(wagtailsnippets_create_url)s\">Erstellen Sie doch jetzt eins!</a>" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "{snippet_type} '{instance}' erstellt" -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "Aufgrund von Fehlern konnte das Snippet nicht erstellt werden." -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "{snippet_type} '{instance}' geändert." -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "Aufgrund von Fehlern konnte das Snippet nicht gespeichert werden." -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "{snippet_type} '{instance}' gelöscht." diff --git a/wagtail/wagtailsnippets/locale/el/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/el/LC_MESSAGES/django.mo index 134a96d8e..a052bc0c3 100644 Binary files a/wagtail/wagtailsnippets/locale/el/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/el/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/el/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/el/LC_MESSAGES/django.po index 39a5302d2..c68845336 100644 --- a/wagtail/wagtailsnippets/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/el/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # serafeim <serafeim@torchbox.com>, 2014 # serafeim <serafeim@torchbox.com>, 2014 @@ -9,18 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-22 17:16+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" -"el/)\n" -"Language: el\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Greek (http://www.transifex.com/projects/p/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" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "Snippets" @@ -81,6 +80,7 @@ msgid "Editing" msgstr "Διόρθωση" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Τίτλος" @@ -102,28 +102,51 @@ msgstr "Προσθήκη %(snippet_type_name)s" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"Δεν υπάρχουν %(snippet_type_name_plural)s. Θέλετε να <a href=" -"\"%(wagtailsnippets_create_url)s\">προσθέσετε μερικά</a>;" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "Δεν υπάρχουν %(snippet_type_name_plural)s. Θέλετε να <a href=\"%(wagtailsnippets_create_url)s\">προσθέσετε μερικά</a>;" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "Δημιουργήθηκε το '{instance}' τύπου {snippet_type}." -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "Δεν ήταν δυνατή η δημιουργία του snippet." -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "Πραγματοποιήθηκε αλλαγή του '{instance}' τύπου {snippet_type}." -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "Δεν ήταν δυνατή η αποθήκευση του snippet." -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "Το '{instance}' τύπου {snippet_type} διαγράφηκε." diff --git a/wagtail/wagtailsnippets/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/en/LC_MESSAGES/django.mo index 4b726f7d6..44e531ab0 100644 Binary files a/wagtail/wagtailsnippets/locale/en/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/en/LC_MESSAGES/django.po index e4048d3cb..cc93c2812 100644 --- a/wagtail/wagtailsnippets/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "" @@ -78,6 +78,7 @@ msgid "Editing" msgstr "" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "" @@ -103,22 +104,47 @@ msgid "" "\"%(wagtailsnippets_create_url)s\">add one</a>?" msgstr "" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "" -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "" -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "" -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "" -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "" diff --git a/wagtail/wagtailsnippets/locale/es/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/es/LC_MESSAGES/django.mo index cbcbfbedc..5f5980e94 100644 Binary files a/wagtail/wagtailsnippets/locale/es/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/es/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/es/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/es/LC_MESSAGES/django.po index 96a2fe344..baf1997b9 100644 --- a/wagtail/wagtailsnippets/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/es/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 # fooflare <amos.oviedo@gmail.com>, 2014 @@ -9,18 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-27 10:02+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" -"es/)\n" -"Language: es\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/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=2; plural=(n != 1);\n" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "Fragmentos" @@ -81,6 +80,7 @@ msgid "Editing" msgstr "Editando" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Título" @@ -102,28 +102,51 @@ msgstr "Añadir %(snippet_type_name)s" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"Ningún %(snippet_type_name_plural)s ha sido creado. ¿Por qué no <a href=" -"\"%(wagtailsnippets_create_url)s\">añadir uno</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "Ningún %(snippet_type_name_plural)s ha sido creado. ¿Por qué no <a href=\"%(wagtailsnippets_create_url)s\">añadir uno</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "{snippet_type} '{instance}' creado." -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "El fragmento no pudo ser creada debido a errores." -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "{snippet_type} '{instance}' actualizado." -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "El fragmento no puedo ser guardado debido a errores." -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "{snippet_type} '{instance}' eliminado." diff --git a/wagtail/wagtailsnippets/locale/eu/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/eu/LC_MESSAGES/django.mo index 7a9b7b573..b3e5368fc 100644 Binary files a/wagtail/wagtailsnippets/locale/eu/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/eu/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/eu/LC_MESSAGES/django.po index 1418e9ec4..edade1ac3 100644 --- a/wagtail/wagtailsnippets/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/eu/LC_MESSAGES/django.po @@ -1,24 +1,23 @@ # 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: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-24 22:36+0000\n" -"Last-Translator: tomdyson <tom@torchbox.com>\n" -"Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" -"eu/)\n" -"Language: eu\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Basque (http://www.transifex.com/projects/p/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" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "" @@ -79,6 +78,7 @@ msgid "Editing" msgstr "" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "" @@ -100,26 +100,51 @@ msgstr "" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" msgstr "" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "" -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "" -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "" -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "" -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "" diff --git a/wagtail/wagtailsnippets/locale/fr/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/fr/LC_MESSAGES/django.mo index deefa7a40..4acab4cbe 100644 Binary files a/wagtail/wagtailsnippets/locale/fr/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/fr/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/fr/LC_MESSAGES/django.po index d65e22a15..33517b893 100644 --- a/wagtail/wagtailsnippets/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/fr/LC_MESSAGES/django.po @@ -1,25 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # nahuel, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-03-18 21:51+0000\n" -"Last-Translator: nahuel\n" -"Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" -"fr/)\n" -"Language: fr\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: French (http://www.transifex.com/projects/p/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=2; plural=(n > 1);\n" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "" @@ -80,6 +79,7 @@ msgid "Editing" msgstr "Rédaction" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Titre" @@ -101,28 +101,51 @@ msgstr "" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"Aucun %(snippet_type_name_plural)s n'a été créé. Pourquoi ne pas en <a href=" -"\"%(wagtailsnippets_create_url)s\">ajouter un</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "Aucun %(snippet_type_name_plural)s n'a été créé. Pourquoi ne pas en <a href=\"%(wagtailsnippets_create_url)s\">ajouter un</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "" -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "" -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "" -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "" -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "{snippet_type} '{instance}' supprimé." diff --git a/wagtail/wagtailsnippets/locale/gl/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/gl/LC_MESSAGES/django.mo index 0d8349be6..024a5263d 100644 Binary files a/wagtail/wagtailsnippets/locale/gl/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/gl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/gl/LC_MESSAGES/django.po index 62e27053a..c3cdd7047 100644 --- a/wagtail/wagtailsnippets/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/gl/LC_MESSAGES/django.po @@ -1,25 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # fooflare <amos.oviedo@gmail.com>, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-03-23 10:33+0000\n" -"Last-Translator: fooflare <amos.oviedo@gmail.com>\n" -"Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" -"language/gl/)\n" -"Language: gl\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Galician (http://www.transifex.com/projects/p/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" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "Fragmentos" @@ -80,6 +79,7 @@ msgid "Editing" msgstr "Editando" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Título" @@ -101,28 +101,51 @@ msgstr "Engadir %(snippet_type_name)s" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"Ningún %(snippet_type_name_plural)s foi creado. ¿Por qué non <a href=" -"\"%(wagtailsnippets_create_url)s\">engadir un</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "Ningún %(snippet_type_name_plural)s foi creado. ¿Por qué non <a href=\"%(wagtailsnippets_create_url)s\">engadir un</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "{snippet_type} '{instance}' creado." -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "O fragmento non puido ser creado debido a errores." -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "{snippet_type} '{instance}' actualizado." -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "O fragmento non puido ser gardado debido a erros." -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "{snippet_type} '{instance}' eliminado." diff --git a/wagtail/wagtailsnippets/locale/mn/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/mn/LC_MESSAGES/django.mo index 6991aad51..086afbd48 100644 Binary files a/wagtail/wagtailsnippets/locale/mn/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/mn/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/mn/LC_MESSAGES/django.po index 0f241162f..28f2e61c2 100644 --- a/wagtail/wagtailsnippets/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/mn/LC_MESSAGES/django.po @@ -1,24 +1,23 @@ # 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: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-25 05:54+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" -"language/mn/)\n" -"Language: mn\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/language/mn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: mn\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "" @@ -79,6 +78,7 @@ msgid "Editing" msgstr "" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "" @@ -100,26 +100,51 @@ msgstr "" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" msgstr "" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "" -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "" -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "" -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "" -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "" diff --git a/wagtail/wagtailsnippets/locale/pl/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/pl/LC_MESSAGES/django.mo index f273491e7..cc356807a 100644 Binary files a/wagtail/wagtailsnippets/locale/pl/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/pl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/pl/LC_MESSAGES/django.po index 12ca36c94..8958e7e1e 100644 --- a/wagtail/wagtailsnippets/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/pl/LC_MESSAGES/django.po @@ -1,25 +1,23 @@ # 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: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-23 10:23+0000\n" -"Last-Translator: utek <mail@utek.pl>\n" -"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" -"pl/)\n" -"Language: pl\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/pl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "Snippety" @@ -80,6 +78,7 @@ msgid "Editing" msgstr "Edycja" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Tytuł" @@ -101,28 +100,51 @@ msgstr "Dodaj %(snippet_type_name)s" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"Żaden%(snippet_type_name_plural)s nie został stworzony. Czemu nie <a href=" -"\"%(wagtailsnippets_create_url)s\">dodać jednego</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "Żaden%(snippet_type_name_plural)s nie został stworzony. Czemu nie <a href=\"%(wagtailsnippets_create_url)s\">dodać jednego</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "Stworzono {snippet_type} '{instance}'." -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "Snippet nie mógł zostać stworzony z powodu błędów." -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "Uaktualniono {snippet_type} '{instance}'." -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "Snippet nie mógł zostać zapisany z powodu błędów." -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "Usunięto {snippet_type} '{instance}'." diff --git a/wagtail/wagtailsnippets/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..eeab05613 Binary files /dev/null and b/wagtail/wagtailsnippets/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..5c3b0b707 --- /dev/null +++ b/wagtail/wagtailsnippets/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,153 @@ +# 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. +# +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-03 01:58+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" +"Language: pt_PT\n" + +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 +msgid "Snippets" +msgstr "Snippets" + +#: templates/wagtailsnippets/chooser/choose.html:2 +msgid "Choose" +msgstr "Escolher" + +#: templates/wagtailsnippets/edit_handlers/snippet_chooser_panel.html:10 +#, python-format +msgid "Choose another %(snippet_type_name)s" +msgstr "Escolher outro %(snippet_type_name)s" + +#: templates/wagtailsnippets/edit_handlers/snippet_chooser_panel.html:11 +#, python-format +msgid "Choose %(snippet_type_name)s" +msgstr "Escolher %(snippet_type_name)s" + +#: templates/wagtailsnippets/snippets/confirm_delete.html:3 +#, python-format +msgid "Delete %(snippet_type_name)s - %(instance)s" +msgstr "Eliminar %(snippet_type_name)s - %(instance)s" + +#: templates/wagtailsnippets/snippets/confirm_delete.html:6 +#: templates/wagtailsnippets/snippets/edit.html:20 +msgid "Delete" +msgstr "Eliminar" + +#: templates/wagtailsnippets/snippets/confirm_delete.html:10 +#, python-format +msgid "Are you sure you want to delete this %(snippet_type_name)s?" +msgstr "Tem a certeza que quer eliminar este %(snippet_type_name)s?" + +#: templates/wagtailsnippets/snippets/confirm_delete.html:13 +msgid "Yes, delete" +msgstr "Sim, eliminar" + +#: templates/wagtailsnippets/snippets/create.html:3 +#, python-format +msgid "New %(snippet_type_name)s" +msgstr "Novo %(snippet_type_name)s" + +#: templates/wagtailsnippets/snippets/create.html:6 +msgid "New" +msgstr "Novo" + +#: templates/wagtailsnippets/snippets/create.html:17 +#: templates/wagtailsnippets/snippets/edit.html:17 +msgid "Save" +msgstr "Guardar" + +#: templates/wagtailsnippets/snippets/edit.html:3 +#, python-format +msgid "Editing %(snippet_type_name)s - %(instance)s" +msgstr "Editando %(snippet_type_name)s - %(instance)s" + +#: templates/wagtailsnippets/snippets/edit.html:6 +msgid "Editing" +msgstr "Editando" + +#: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 +msgid "Title" +msgstr "Título" + +#: templates/wagtailsnippets/snippets/type_index.html:3 +#, python-format +msgid "Snippets %(snippet_type_name_plural)s" +msgstr "Snippets %(snippet_type_name_plural)s" + +#: templates/wagtailsnippets/snippets/type_index.html:10 +#, python-format +msgid "Snippets <span>%(snippet_type_name_plural)s</span>" +msgstr "Snippets <span>%(snippet_type_name_plural)s</span>" + +#: templates/wagtailsnippets/snippets/type_index.html:13 +#, python-format +msgid "Add %(snippet_type_name)s" +msgstr "Adicionar %(snippet_type_name)s" + +#: templates/wagtailsnippets/snippets/type_index.html:23 +#, python-format +msgid "" +"No %(snippet_type_name_plural)s have been created. Why not <a href=" +"\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "" +"Nenhum %(snippet_type_name_plural)s foi criado. Porque não <a href=" +"\"%(wagtailsnippets_create_url)s\">adicionar um</a>?" + +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "Utilização de %(title)s" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "Utilização de" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "Ascendente" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "Tipo" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "Estado" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "Editar esta página" + +#: views/snippets.py:129 +msgid "{snippet_type} '{instance}' created." +msgstr "{snippet_type} '{instance}' atualizado." + +#: views/snippets.py:136 +msgid "The snippet could not be created due to errors." +msgstr "O snippet não pôde ser criado devido a erros." + +#: views/snippets.py:170 +msgid "{snippet_type} '{instance}' updated." +msgstr "{snippet_type} '{instance}' atualizado." + +#: views/snippets.py:177 +msgid "The snippet could not be saved due to errors." +msgstr "O snippet não pôde ser guardado devido a erros." + +#: views/snippets.py:206 +msgid "{snippet_type} '{instance}' deleted." +msgstr "{snippet_type} '{instance}' eliminado." diff --git a/wagtail/wagtailsnippets/locale/ro/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/ro/LC_MESSAGES/django.mo index ecd58c392..696d6b2db 100644 Binary files a/wagtail/wagtailsnippets/locale/ro/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/ro/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/ro/LC_MESSAGES/django.po index c26f317ba..b80fe4bd4 100644 --- a/wagtail/wagtailsnippets/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/ro/LC_MESSAGES/django.po @@ -1,27 +1,25 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# zerolab, 2014 -# zerolab, 2014 +# Dan Braghis, 2014 +# Dan Braghis, 2014 msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-23 14:19+0000\n" -"Last-Translator: zerolab\n" -"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" -"language/ro/)\n" -"Language: ro\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/language/ro/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?" -"2:1));\n" +"Language: ro\n" +"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "Fragmente" @@ -82,6 +80,7 @@ msgid "Editing" msgstr "Editare" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "Titlu" @@ -103,28 +102,51 @@ msgstr "Adaugă %(snippet_type_name)s" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"Nu au fost create %(snippet_type_name_plural)s. De să nu <a href=" -"\"%(wagtailsnippets_create_url)s\">adăugați unul</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "Nu au fost create %(snippet_type_name_plural)s. De să nu <a href=\"%(wagtailsnippets_create_url)s\">adăugați unul</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "{snippet_type} '{instance}' a fost creat." -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "Fragmentul nu a fost creat din cauza erorilor." -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "{snippet_type} '{instance}' a fost actualizat." -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "Fragmentul nu a fost salvat din cauza erorilor." -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "{snippet_type} '{instance}' a fost șters." diff --git a/wagtail/wagtailsnippets/locale/zh/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/zh/LC_MESSAGES/django.mo index fc3076b03..d417847cb 100644 Binary files a/wagtail/wagtailsnippets/locale/zh/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/zh/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/zh/LC_MESSAGES/django.po index 16195bb38..790a8a54b 100644 --- a/wagtail/wagtailsnippets/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/zh/LC_MESSAGES/django.po @@ -1,24 +1,23 @@ # 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: 2014-07-11 10:55+0000\n" -"PO-Revision-Date: 2014-02-28 16:07+0000\n" -"Last-Translator: serafeim <serafeim@torchbox.com>\n" -"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" -"zh/)\n" -"Language: zh\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-01 15:43+0000\n" +"Last-Translator: Karl Hobley <karl@torchbox.com>\n" +"Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/zh/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "片段" @@ -79,6 +78,7 @@ msgid "Editing" msgstr "编辑" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "标题" @@ -100,28 +100,51 @@ msgstr "添加%(snippet_type_name)s" #: templates/wagtailsnippets/snippets/type_index.html:23 #, python-format msgid "" -"No %(snippet_type_name_plural)s have been created. Why not <a href=" -"\"%(wagtailsnippets_create_url)s\">add one</a>?" -msgstr "" -"没有任何%(snippet_type_name_plural)s片段。为什么不<a href=" -"\"%(wagtailsnippets_create_url)s\">创建一个</a>?" +"No %(snippet_type_name_plural)s have been created. Why not <a " +"href=\"%(wagtailsnippets_create_url)s\">add one</a>?" +msgstr "没有任何%(snippet_type_name_plural)s片段。为什么不<a href=\"%(wagtailsnippets_create_url)s\">创建一个</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "已创建{snippet_type} '{instance}'" -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "多个错误导致这个片段无法创建。" -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "已经更新{snippet_type} '{instance}'。" -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "多个错误导致这个片段无法保存" -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "已删除{snippet_type} '{instance}'" diff --git a/wagtail/wagtailsnippets/locale/zh_TW/LC_MESSAGES/django.mo b/wagtail/wagtailsnippets/locale/zh_TW/LC_MESSAGES/django.mo index d3f5578db..ca8e15e75 100644 Binary files a/wagtail/wagtailsnippets/locale/zh_TW/LC_MESSAGES/django.mo and b/wagtail/wagtailsnippets/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailsnippets/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtailsnippets/locale/zh_TW/LC_MESSAGES/django.po index 7c4182171..2dd9d1c95 100644 --- a/wagtail/wagtailsnippets/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtailsnippets/locale/zh_TW/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:55+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-02-28 16:07+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: wagtail_hooks.py:24 templates/wagtailsnippets/snippets/index.html:3 +#: wagtail_hooks.py:25 templates/wagtailsnippets/snippets/index.html:3 msgid "Snippets" msgstr "片段" @@ -78,6 +78,7 @@ msgid "Editing" msgstr "編輯" #: templates/wagtailsnippets/snippets/list.html:8 +#: templates/wagtailsnippets/snippets/usage.html:16 msgid "Title" msgstr "標題" @@ -105,22 +106,47 @@ msgstr "" "沒有任何 %(snippet_type_name_plural)s 片段。為什麼不<a href=" "\"%(wagtailsnippets_create_url)s\">建立一個</a>?" -#: views/snippets.py:127 +#: templates/wagtailsnippets/snippets/usage.html:3 +#, python-format +msgid "Usage of %(title)s" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:5 +msgid "Usage of" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:17 +msgid "Parent" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:18 +msgid "Type" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:19 +msgid "Status" +msgstr "" + +#: templates/wagtailsnippets/snippets/usage.html:26 +msgid "Edit this page" +msgstr "" + +#: views/snippets.py:129 msgid "{snippet_type} '{instance}' created." msgstr "已建立 {snippet_type} '{instance}'" -#: views/snippets.py:134 +#: views/snippets.py:136 msgid "The snippet could not be created due to errors." msgstr "片段因有錯誤而無法建立。" -#: views/snippets.py:168 +#: views/snippets.py:170 msgid "{snippet_type} '{instance}' updated." msgstr "已經更新 {snippet_type} '{instance}'。" -#: views/snippets.py:175 +#: views/snippets.py:177 msgid "The snippet could not be saved due to errors." msgstr "片段因有錯誤而無法儲存。" -#: views/snippets.py:204 +#: views/snippets.py:206 msgid "{snippet_type} '{instance}' deleted." msgstr "已刪除 {snippet_type} '{instance}'" diff --git a/wagtail/wagtailsnippets/models.py b/wagtail/wagtailsnippets/models.py index 8af626655..3f1b9cad9 100644 --- a/wagtail/wagtailsnippets/models.py +++ b/wagtail/wagtailsnippets/models.py @@ -1,4 +1,7 @@ from django.contrib.contenttypes.models import ContentType +from django.core.urlresolvers import reverse + +from wagtail.wagtailadmin.utils import get_object_usage SNIPPET_MODELS = [] @@ -18,5 +21,15 @@ def get_snippet_content_types(): def register_snippet(model): if model not in SNIPPET_MODELS: + model.get_usage = get_object_usage + model.usage_url = get_snippet_usage_url SNIPPET_MODELS.append(model) SNIPPET_MODELS.sort(key=lambda x: x._meta.verbose_name) + + +def get_snippet_usage_url(self): + content_type = ContentType.objects.get_for_model(self) + return reverse('wagtailsnippets_usage', + args=(content_type.app_label, + content_type.model, + self.id,)) diff --git a/wagtail/wagtailsnippets/templates/wagtailsnippets/snippets/edit.html b/wagtail/wagtailsnippets/templates/wagtailsnippets/snippets/edit.html index 95d3d3dc5..6fa7b258d 100644 --- a/wagtail/wagtailsnippets/templates/wagtailsnippets/snippets/edit.html +++ b/wagtail/wagtailsnippets/templates/wagtailsnippets/snippets/edit.html @@ -4,12 +4,12 @@ {% block bodyclass %}menu-snippets{% endblock %} {% block content %} {% trans "Editing" as editing_str %} - {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=instance icon="snippet" %} + {% include "wagtailadmin/shared/header.html" with title=editing_str subtitle=instance icon="snippet" usage_object=instance %} <form action="{% url 'wagtailsnippets_edit' content_type.app_label content_type.model instance.id %}" method="POST"> {% csrf_token %} {{ edit_handler.render_form_content }} - + <footer> <ul> <li class="actions"> diff --git a/wagtail/wagtailsnippets/templates/wagtailsnippets/snippets/usage.html b/wagtail/wagtailsnippets/templates/wagtailsnippets/snippets/usage.html new file mode 100644 index 000000000..422b95c33 --- /dev/null +++ b/wagtail/wagtailsnippets/templates/wagtailsnippets/snippets/usage.html @@ -0,0 +1,49 @@ +{% extends "wagtailadmin/base.html" %} +{% load i18n %} +{% block titletag %}{% blocktrans with title=instance %}Usage of {{ title }}{% endblocktrans %}{% endblock %} +{% block content %} + {% trans "Usage of" as usage_str %} + {% include "wagtailadmin/shared/header.html" with title=usage_str subtitle=instance %} + + <div class="nice-padding"> + <table class="listing"> + <col /> + <col width="30%"/> + <col width="15%"/> + <col width="15%"/> + <thead> + <tr> + <th class="title">{% trans "Title" %}</th> + <th>{% trans "Parent" %}</th> + <th>{% trans "Type" %}</th> + <th>{% trans "Status" %}</th> + </tr> + </thead> + <tbody> + {% for page in used_by %} + <tr> + <td class="title" valign="top"> + <h2><a href="{% url 'wagtailadmin_pages_edit' page.id %}" title="{% trans 'Edit this page' %}">{{ page.title }}</a></h2> + </td> + <td> + {% if page.get_parent %} + <a href="{% url 'wagtailadmin_explore' page.get_parent.id %}">{{ page.get_parent.title }}</a> + {% endif %} + </td> + <td> + {{ page.content_type.model_class.get_verbose_name }} + </td> + <td> + {% if page.live %} + <a href="{{ page.url }}" target="_blank" class="status-tag {% if page.status_string != "draft" %}primary{% endif %}">{{ page.status_string }}</a> + {% else %} + <span class="status-tag {% if page.status_string != "draft" %}primary{% endif %}">{{ page.status_string }}</span> + {% endif %} + </td> + </tr> + {% endfor %} + </tbody> + </table> + </div> + {% include "wagtailadmin/shared/pagination_nav.html" with items=used_by linkurl="-"%} +{% endblock %} diff --git a/wagtail/wagtailsnippets/tests.py b/wagtail/wagtailsnippets/tests.py index 61bf9baaf..1b3431730 100644 --- a/wagtail/wagtailsnippets/tests.py +++ b/wagtail/wagtailsnippets/tests.py @@ -2,6 +2,7 @@ from django.test import TestCase from django.core.urlresolvers import reverse from wagtail.tests.utils import WagtailTestUtils +from django.test.utils import override_settings from wagtail.tests.models import Advert, AlphaSnippet, ZuluSnippet from wagtail.wagtailsnippets.models import register_snippet, SNIPPET_MODELS @@ -9,6 +10,7 @@ from wagtail.wagtailsnippets.views.snippets import ( get_snippet_edit_handler ) from wagtail.wagtailsnippets.edit_handlers import SnippetChooserPanel +from wagtail.wagtailcore.models import Page class TestSnippetIndexView(TestCase, WagtailTestUtils): @@ -185,3 +187,21 @@ class TestSnippetOrdering(TestCase): # may get registered elsewhere during test self.assertLess(SNIPPET_MODELS.index(AlphaSnippet), SNIPPET_MODELS.index(ZuluSnippet)) + + +class TestUsageCount(TestCase): + fixtures = ['wagtail/tests/fixtures/test.json'] + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_snippet_usage_count(self): + advert = Advert.objects.get(id=1) + self.assertEqual(advert.get_usage().count(), 1) + + +class TestUsedBy(TestCase): + fixtures = ['wagtail/tests/fixtures/test.json'] + + @override_settings(WAGTAIL_USAGE_COUNT_ENABLED=True) + def test_snippet_used_by(self): + advert = Advert.objects.get(id=1) + self.assertEqual(type(advert.get_usage()[0]), Page) diff --git a/wagtail/wagtailsnippets/urls.py b/wagtail/wagtailsnippets/urls.py index eb7dc0112..b97950228 100644 --- a/wagtail/wagtailsnippets/urls.py +++ b/wagtail/wagtailsnippets/urls.py @@ -13,4 +13,5 @@ urlpatterns = [ url(r'^(\w+)/(\w+)/new/$', snippets.create, name='wagtailsnippets_create'), url(r'^(\w+)/(\w+)/(\d+)/$', snippets.edit, name='wagtailsnippets_edit'), url(r'^(\w+)/(\w+)/(\d+)/delete/$', snippets.delete, name='wagtailsnippets_delete'), + url(r'^(\w+)/(\w+)/(\d+)/usage/$', snippets.usage, name='wagtailsnippets_usage'), ] diff --git a/wagtail/wagtailsnippets/views/snippets.py b/wagtail/wagtailsnippets/views/snippets.py index ed0e310cb..4e146b6fa 100644 --- a/wagtail/wagtailsnippets/views/snippets.py +++ b/wagtail/wagtailsnippets/views/snippets.py @@ -7,6 +7,8 @@ from django.contrib import messages from django.contrib.auth.decorators import permission_required from django.core.exceptions import PermissionDenied from django.utils.translation import ugettext as _ +from django.core.urlresolvers import reverse +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from wagtail.wagtailadmin.edit_handlers import ObjectList, extract_panel_definitions_from_model_class @@ -182,7 +184,7 @@ def edit(request, content_type_app_name, content_type_model_name, id): 'content_type': content_type, 'snippet_type_name': snippet_type_name, 'instance': instance, - 'edit_handler': edit_handler, + 'edit_handler': edit_handler }) @@ -213,3 +215,26 @@ def delete(request, content_type_app_name, content_type_model_name, id): 'snippet_type_name': snippet_type_name, 'instance': instance, }) + + +@permission_required('wagtailadmin.access_admin') +def usage(request, content_type_app_name, content_type_model_name, id): + content_type = get_content_type_from_url_params(content_type_app_name, content_type_model_name) + model = content_type.model_class() + instance = get_object_or_404(model, id=id) + + # Pagination + p = request.GET.get('p', 1) + paginator = Paginator(instance.get_usage(), 20) + + try: + used_by = paginator.page(p) + except PageNotAnInteger: + used_by = paginator.page(1) + except EmptyPage: + used_by = paginator.page(paginator.num_pages) + + return render(request, "wagtailsnippets/snippets/usage.html", { + 'instance': instance, + 'used_by': used_by + }) diff --git a/wagtail/wagtailusers/locale/bg/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/bg/LC_MESSAGES/django.mo index 695b225c9..085a028ce 100644 Binary files a/wagtail/wagtailusers/locale/bg/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/bg/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/bg/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/bg/LC_MESSAGES/django.po index ed8de946f..0a3be5d92 100644 --- a/wagtail/wagtailusers/locale/bg/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/bg/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Bulgarian (http://www.transifex.com/projects/p/wagtail/" @@ -95,7 +95,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Потребители" diff --git a/wagtail/wagtailusers/locale/ca/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/ca/LC_MESSAGES/django.mo index dda59cd0b..1e398be77 100644 Binary files a/wagtail/wagtailusers/locale/ca/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/ca/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/ca/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/ca/LC_MESSAGES/django.po index 94db0ca2e..718365e70 100644 --- a/wagtail/wagtailusers/locale/ca/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/ca/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:56+0000\n" "Last-Translator: Lloople <d.lloople@gmail.com>\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/wagtail/language/" @@ -92,7 +92,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Usuaris" diff --git a/wagtail/wagtailusers/locale/de/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/de/LC_MESSAGES/django.mo index 8dad58a07..725ce6033 100644 Binary files a/wagtail/wagtailusers/locale/de/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/de/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/de/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/de/LC_MESSAGES/django.po index d6c320dfe..d216827fe 100644 --- a/wagtail/wagtailusers/locale/de/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: German (http://www.transifex.com/projects/p/wagtail/language/" @@ -96,7 +96,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Benutzer" diff --git a/wagtail/wagtailusers/locale/el/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/el/LC_MESSAGES/django.mo index 2250e419a..10d6a720f 100644 Binary files a/wagtail/wagtailusers/locale/el/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/el/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/el/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/el/LC_MESSAGES/django.po index ee4a7e89e..0a8400b9c 100644 --- a/wagtail/wagtailusers/locale/el/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/el/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:15+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/wagtail/language/" @@ -99,7 +99,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Χρήστες" diff --git a/wagtail/wagtailusers/locale/en/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/en/LC_MESSAGES/django.mo index 4b726f7d6..44e531ab0 100644 Binary files a/wagtail/wagtailusers/locale/en/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/en/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/en/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/en/LC_MESSAGES/django.po index 34caa392e..f2f7473d1 100644 --- a/wagtail/wagtailusers/locale/en/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+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" @@ -89,7 +89,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "" diff --git a/wagtail/wagtailusers/locale/es/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/es/LC_MESSAGES/django.mo index 47bde8411..b78a483a5 100644 Binary files a/wagtail/wagtailusers/locale/es/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/es/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/es/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/es/LC_MESSAGES/django.po index b92d83b01..7b9465fa2 100644 --- a/wagtail/wagtailusers/locale/es/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/es/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-23 10:19+0000\n" "Last-Translator: fooflare <amos.oviedo@gmail.com>\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/wagtail/language/" @@ -97,7 +97,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Usuarios" diff --git a/wagtail/wagtailusers/locale/eu/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/eu/LC_MESSAGES/django.mo index f5afff9e4..059c50fbc 100644 Binary files a/wagtail/wagtailusers/locale/eu/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/eu/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/eu/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/eu/LC_MESSAGES/django.po index a90cbe57e..a318cd86d 100644 --- a/wagtail/wagtailusers/locale/eu/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/eu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Basque (http://www.transifex.com/projects/p/wagtail/language/" @@ -90,7 +90,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "" diff --git a/wagtail/wagtailusers/locale/fr/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/fr/LC_MESSAGES/django.mo index 6c1e6be50..45fe41754 100644 Binary files a/wagtail/wagtailusers/locale/fr/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/fr/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/fr/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/fr/LC_MESSAGES/django.po index 2d7c91e10..6f091d8c6 100644 --- a/wagtail/wagtailusers/locale/fr/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-18 23:16+0000\n" "Last-Translator: nahuel\n" "Language-Team: French (http://www.transifex.com/projects/p/wagtail/language/" @@ -94,7 +94,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Utilisateurs" diff --git a/wagtail/wagtailusers/locale/gl/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/gl/LC_MESSAGES/django.mo index cbf2ea36d..b5aaaa895 100644 Binary files a/wagtail/wagtailusers/locale/gl/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/gl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/gl/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/gl/LC_MESSAGES/django.po index a4da8c0a4..f81b208df 100644 --- a/wagtail/wagtailusers/locale/gl/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/gl/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-23 10:33+0000\n" "Last-Translator: fooflare <amos.oviedo@gmail.com>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/wagtail/" @@ -95,7 +95,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Usuarios" diff --git a/wagtail/wagtailusers/locale/mn/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/mn/LC_MESSAGES/django.mo index 4d78adf19..a610b6cd7 100644 Binary files a/wagtail/wagtailusers/locale/mn/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/mn/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/mn/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/mn/LC_MESSAGES/django.po index 7556a95d2..0724b1d54 100644 --- a/wagtail/wagtailusers/locale/mn/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/mn/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Mongolian (http://www.transifex.com/projects/p/wagtail/" @@ -90,7 +90,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "" diff --git a/wagtail/wagtailusers/locale/pl/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/pl/LC_MESSAGES/django.mo index fe3ea1e38..04157a81f 100644 Binary files a/wagtail/wagtailusers/locale/pl/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/pl/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/pl/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/pl/LC_MESSAGES/django.po index 79a29fae4..e5f9b456d 100644 --- a/wagtail/wagtailusers/locale/pl/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/pl/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 22:16+0000\n" "Last-Translator: utek <mail@utek.pl>\n" "Language-Team: Polish (http://www.transifex.com/projects/p/wagtail/language/" @@ -96,7 +96,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Użytkownicy" diff --git a/wagtail/wagtailusers/locale/pt_PT/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/pt_PT/LC_MESSAGES/django.mo new file mode 100644 index 000000000..0698c96aa Binary files /dev/null and b/wagtail/wagtailusers/locale/pt_PT/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/pt_PT/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/pt_PT/LC_MESSAGES/django.po new file mode 100644 index 000000000..abd1de940 --- /dev/null +++ b/wagtail/wagtailusers/locale/pt_PT/LC_MESSAGES/django.po @@ -0,0 +1,206 @@ +# 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. +# +# Translators: +# Thiago Cangussu <cangussu.thg@gmail.com>, 2014 +msgid "" +msgstr "" +"Project-Id-Version: Wagtail 0.5.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" +"PO-Revision-Date: 2014-08-03 01:59+0100\n" +"Last-Translator: Jose Lourenco <jose@lourenco.ws>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" +"Language: pt_PT\n" + +#: forms.py:18 forms.py:95 +msgid "Administrator" +msgstr "Administrador" + +#: forms.py:20 +msgid "If ticked, this user has the ability to manage user accounts." +msgstr "" +"Se selecionado, este utilizador terá permissão para gerir contas de " +"utilizadores." + +#: forms.py:23 forms.py:80 +msgid "Email" +msgstr "Email" + +#: forms.py:24 forms.py:81 +msgid "First Name" +msgstr "Primeiro Nome" + +#: forms.py:25 forms.py:82 +msgid "Last Name" +msgstr "Último nome" + +#: forms.py:68 +msgid "A user with that username already exists." +msgstr "Um utilizador com esse nome já existe." + +#: forms.py:69 +msgid "The two password fields didn't match." +msgstr "As senhas nos dois campos não coincidem." + +#: forms.py:72 templates/wagtailusers/list.html:15 +msgid "Username" +msgstr "Nome de utilizador" + +#: forms.py:75 +msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only." +msgstr "" +"Obrigatório. 30 caracteres ou menos. Somente letras, números e @/./+/-/_." + +#: forms.py:77 +msgid "This value may contain only letters, numbers and @/./+/-/_ characters." +msgstr "" +"Este valor apenas pode conter letras, números e os caracteres @/./+/-/_." + +#: forms.py:85 +msgid "Password" +msgstr "Senha" + +#: forms.py:88 +msgid "Leave blank if not changing." +msgstr "Deixar em branco se não houver alteração" + +#: forms.py:90 +msgid "Password confirmation" +msgstr "Confirmação de senha" + +#: forms.py:92 +msgid "Enter the same password as above, for verification." +msgstr "Introduza a mesma senha anterior para verificação." + +#: forms.py:97 +msgid "Administrators have the ability to manage user accounts." +msgstr "Os administradores têm a permissão para gerir contas de utilizadores." + +#: models.py:13 +msgid "Receive notification when a page is submitted for moderation" +msgstr "Receber notificação quando uma página for enviada para moderação" + +#: models.py:18 +msgid "Receive notification when your page edit is approved" +msgstr "Receber notificação quando a edição da sua página for aprovada" + +#: models.py:23 +msgid "Receive notification when your page edit is rejected" +msgstr "Receber notificação quando a edição da sua página for rejeitada" + +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 +#: templates/wagtailusers/index.html:17 +msgid "Users" +msgstr "Utilizadores" + +#: templates/wagtailusers/create.html:4 templates/wagtailusers/create.html:8 +#: templates/wagtailusers/create.html:35 +msgid "Add user" +msgstr "Adicionar utilizador" + +#: templates/wagtailusers/create.html:12 templates/wagtailusers/edit.html:12 +msgid "Account" +msgstr "Conta" + +#: templates/wagtailusers/create.html:13 templates/wagtailusers/create.html:28 +#: templates/wagtailusers/edit.html:13 +msgid "Roles" +msgstr "Funções (roles)" + +#: templates/wagtailusers/edit.html:4 templates/wagtailusers/edit.html.py:8 +msgid "Editing" +msgstr "Editando" + +#: templates/wagtailusers/edit.html:30 templates/wagtailusers/edit.html:37 +msgid "Save" +msgstr "Guardar" + +#: templates/wagtailusers/index.html:18 +msgid "Add a user" +msgstr "Adicionar um utilizador" + +#: templates/wagtailusers/list.html:7 +msgid "Name" +msgstr "Nome" + +#: templates/wagtailusers/list.html:22 +msgid "Level" +msgstr "Nível" + +#: templates/wagtailusers/list.html:23 +msgid "Status" +msgstr "Estado" + +#: templates/wagtailusers/list.html:36 +msgid "Admin" +msgstr "Admin" + +#: templates/wagtailusers/list.html:37 +msgid "Active" +msgstr "Ativo" + +#: templates/wagtailusers/list.html:37 +msgid "Inactive" +msgstr "Inativo" + +#: templates/wagtailusers/results.html:5 +#, python-format +msgid "" +"\n" +" There is one match\n" +" " +msgid_plural "" +"\n" +" There are %(counter)s matches\n" +" " +msgstr[0] "" +"\n" +" Existe uma correspondência\n" +" " +msgstr[1] "" +"\n" +" Existem %(counter)s correspondências\n" +" " + +#: templates/wagtailusers/results.html:18 +#, python-format +msgid "Sorry, no users match \"<em>%(query_string)s</em>\"" +msgstr "" +"Desculpe, nenhum utilizador corresponde a \"<em>%(query_string)s</em>\"" + +#: templates/wagtailusers/results.html:21 +#, python-format +msgid "" +"There are no users configured. Why not <a href=\"%(wagtailusers_create_url)s" +"\">add some</a>?" +msgstr "" +"Não existem utilizadores configurados. Por que não <a href=" +"\"%(wagtailusers_create_url)s\">adicionar algum</a>?" + +#: views/users.py:30 views/users.py:37 +msgid "Search users" +msgstr "Procurar utilizadores" + +#: views/users.py:84 +msgid "User '{0}' created." +msgstr "Utilizador '{0}' criado." + +#: views/users.py:87 +msgid "The user could not be created due to errors." +msgstr "O utilizador não pôde ser criado devido a erros." + +#: views/users.py:103 +msgid "User '{0}' updated." +msgstr "Utilizador '{0}' atualizado." + +#: views/users.py:106 +msgid "The user could not be saved due to errors." +msgstr "O utilizador não pôde ser guardado devido a erros." diff --git a/wagtail/wagtailusers/locale/ro/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/ro/LC_MESSAGES/django.mo index 101838acd..382451327 100644 Binary files a/wagtail/wagtailusers/locale/ro/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/ro/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/ro/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/ro/LC_MESSAGES/django.po index e7de771f9..167337849 100644 --- a/wagtail/wagtailusers/locale/ro/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/ro/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-18 13:22+0000\n" "Last-Translator: zerolab\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/wagtail/" @@ -93,7 +93,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "Utilizatori" diff --git a/wagtail/wagtailusers/locale/zh/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/zh/LC_MESSAGES/django.mo index 690341269..32d3fac08 100644 Binary files a/wagtail/wagtailusers/locale/zh/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/zh/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/zh/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/zh/LC_MESSAGES/django.po index 357282e7b..e23076a78 100644 --- a/wagtail/wagtailusers/locale/zh/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/zh/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: serafeim <serafeim@torchbox.com>\n" "Language-Team: Chinese (http://www.transifex.com/projects/p/wagtail/language/" @@ -90,7 +90,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "用户" diff --git a/wagtail/wagtailusers/locale/zh_TW/LC_MESSAGES/django.mo b/wagtail/wagtailusers/locale/zh_TW/LC_MESSAGES/django.mo index 59297ccaa..da4ffeddd 100644 Binary files a/wagtail/wagtailusers/locale/zh_TW/LC_MESSAGES/django.mo and b/wagtail/wagtailusers/locale/zh_TW/LC_MESSAGES/django.mo differ diff --git a/wagtail/wagtailusers/locale/zh_TW/LC_MESSAGES/django.po b/wagtail/wagtailusers/locale/zh_TW/LC_MESSAGES/django.po index 9af41844e..849cbccb4 100644 --- a/wagtail/wagtailusers/locale/zh_TW/LC_MESSAGES/django.po +++ b/wagtail/wagtailusers/locale/zh_TW/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Wagtail\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-07-11 10:52+0000\n" +"POT-Creation-Date: 2014-08-01 16:39+0100\n" "PO-Revision-Date: 2014-03-14 21:12+0000\n" "Last-Translator: wdv4758h <wdv4758h@gmail.com>\n" "Language-Team: \n" @@ -89,7 +89,7 @@ msgstr "" msgid "Receive notification when your page edit is rejected" msgstr "" -#: wagtail_hooks.py:21 templates/wagtailusers/index.html:4 +#: wagtail_hooks.py:22 templates/wagtailusers/index.html:4 #: templates/wagtailusers/index.html:17 msgid "Users" msgstr "使用者"